Blog
Technical Walkthroughs

How an IoT pentest works

A connected product is four targets pretending to be one: hardware, firmware, a radio and a cloud backend with an app in front of it. This is the order we test them in, what lands on your desk at the end, and what the engagement deliberately leaves out.

C
Carlos Flores
CEO
29 July 2026
7 min read
Compartir:
A connected device drawn by layer: debug pads on the board, the firmware they expose, the radio it speaks and the cloud API behind it.

What an IoT pentest actually covers

Ask three vendors to test "the device" and you get three different scopes. A connected product is not one target but a small distributed system, and the failures worth finding live in the seams between its parts: the board and its debug interfaces, the firmware and its update mechanism, the radios and their pairing flows, and the cloud API the whole fleet talks to.

A test that stops at the board is a hardware review. One that stops at the API is an API pentest. An IoT penetration test follows a finding across the boundaries: the key read off a flash chip that then authenticates to the production API.

OWASP’s IoT Security Testing Guide splits a device the same way, into processing units, memory, firmware, data exchange services, and internal, physical, wireless and user interfaces.

Scope, rules of engagement and what you need ready

Before a screw comes out we agree in writing which hardware revisions and firmware versions are in scope, which cloud environment we point at, which radio bands we may transmit on, and what happens when a unit dies.

Physical testing destroys devices. If the only unit in existence is the one on your demo stand, the engagement ends when a soldering iron slips.

The rules of engagement settle the logistics that otherwise eat a week: who we call at 02:00, which addresses are ours, whether production telemetry is in play, and whether legal has cleared reverse engineering of third-party components.

What to have ready before day one
Two or three identical units, at least one we may open, desolder and destroy. The firmware image or a working update file. Accounts at every privilege level, including the installer role. A written note of anything we must not touch.

Regulation sets the clock. The EU Cyber Resilience Act entered into force on 10 December 2024, with reporting obligations from 11 September 2026 and its main obligations from 11 December 2027. If your product carries a CE mark and connects to anything, that applies to you.

Reconnaissance, and the interfaces nobody meant to ship

Reconnaissance here is less about scanning than about drawing the thing accurately. We take a unit apart, identify the components, and build a device model: what runs where, what stores what, and every interface carrying data in or out. In parallel we watch it boot and provision on a controlled network, capture its traffic and enumerate the backend endpoints it uses.

Then the physical layer, where an IoT test stops resembling anything else. A UART console still printing its boot log. A JTAG or SWD debug port. SPI or I2C flash readable off the board. Test pads left by the factory line. The questions are simple: can we get a shell without credentials, recover secrets from the flash, boot modified code, and is secure boot enforced or merely present?

The consumer baseline is direct about this. ETSI EN 303 645 requires unused network and logical interfaces to be disabled, and debug interfaces to be disabled or protected by authentication or access control. On a plant floor rather than a kitchen counter, the reference becomes IEC 62443: part 4-2 covers components, part 3-3 covers systems and security levels.

Firmware: the phase that makes this an IoT test

Firmware is the centre of gravity. We obtain the image from your build server, from the update endpoint or off the chip, then work through it in order. OWASP’s Firmware Security Testing Methodology sets out nine stages for exactly this, from obtaining the firmware through extracting and analysing the filesystem, emulation, dynamic and runtime analysis, and finally binary exploitation. Firmware analysis is the phase clients assume is optional and the one that pays for the engagement.

What comes out of it, over and over:

  • Hardcoded credentials and API keys, identical across every unit ever shipped.
  • Private keys baked into the image, so "the device authenticates to the cloud" really means "any copy of this image authenticates to the cloud".
  • Third-party components years behind, carrying public exploits nobody tracked. Verizon’s 2026 DBIR puts vulnerability exploitation behind 31% of breaches, ahead of stolen credentials as the way in.
  • An update mechanism that fetches over plain HTTP, or verifies a signature it skips when the file is malformed in the right way.

The update path is the one control that can repair everything else after shipping: a bypassable signature check turns a local hardware finding into a remote, fleet-wide one.

How the device talks, and who it talks to

Network first: which ports listen, in which device state, and whether services reachable during setup stay reachable afterwards.

Then the radios, which depend on the product. For Wi-Fi we test the provisioning flow and the temporary access point almost every device raises during onboarding, and whether that window authenticates anyone at all. For Bluetooth Low Energy we test pairing mode, characteristic permissions and whether a GATT service accepts commands with no bond in place. For Zigbee, LoRaWAN or a proprietary sub-GHz link we test key provisioning, replay protection and behaviour under jamming. Encryption in transit gets checked, never assumed: a TLS session that does not validate the server certificate is a common finding on constrained devices.

Most of the value, though, is not in one device but in the fleet, and the backend serving a hundred thousand units fails the way multi-tenant APIs fail. The most productive single test is object-level authorisation: take your own account, take a device identifier that is not yours, and ask the API for it. Broken object level authorisation is the first entry in the 2023 OWASP API Security Top 10, and here it is rarely theoretical: identifiers are printed on the box, broadcast over the air, or sequential.

The companion app is tested against the OWASP MASVS control groups, and we check whether certificate pinning survives contact with an attacker rather than merely existing. We also read the app as documentation: it is often the fullest description of the API anyone has written.

Both surfaces are tested as what they are: the back end as a cloud environment, the companion app as a mobile application, not as accessories to the device.

Exploitation and verification

Nothing reaches the report because a scanner flagged it. Every candidate finding is proven on the bench: we build the exploit, run it against a device we control, and capture the evidence.

Chaining is where the value is. A UART console on its own is a hardware note. A UART console that yields a shared API key, which authenticates to the production backend, which exposes other customers’ devices, is the finding that changes a roadmap. PTES keeps exploitation and post-exploitation as separate phases for this reason, and NIST SP 800-115 loops its attack phase back into further discovery, because access earns new information.

Prioritisation follows the evidence, not a score copied from a database. Where a component is already under attack in the wild, CISA’s Known Exploited Vulnerabilities catalogue is a useful tiebreaker: it records the flaws with confirmed exploitation, which is a different question from how high a score is.

The report, and what you actually receive

The deliverable is a document, not a tool export. It contains:

  • An executive summary a non-technical director can read, stating what an attacker could achieve and what that means for the product and its users.
  • One entry per finding, naming the affected component and firmware version, with reproduction steps your engineers can follow, the evidence, the impact in your terms, and a remediation that names the fix rather than the category.
  • An attack narrative, so a chain reads as one story instead of four unrelated items.
  • A prioritised remediation plan, split between the next release and the platform roadmap, mapped to whatever you answer to: ETSI EN 303 645, IEC 62443, or a customer questionnaire.

We also run a live debrief with the engineers who will do the work: half an hour walking a firmware team through the exploit is worth more than the paragraph describing it. If you need an attestation letter, say so during scoping, because what it can honestly claim depends on what was in scope.

The retest, and how long an engagement takes

A finding is not closed because a ticket is. Once your team ships the fixes we run a retest against the new firmware and backend, re-running the original proof for each item and confirming the fix holds rather than moves. Because fixes ship as a firmware release, the retest also confirms the update mechanism actually delivered the change.

How long the whole thing takes

Ranges, not promises; the introductory meeting turns them into a date. A single device with one radio, a companion app and a small API is typically two to three weeks of testing. A product family with several hardware revisions, several radios and a substantial cloud platform runs four to six. Reporting and the debrief add a few days.

What moves the range:

  • Hardware variants. Two revisions of one board is not double the work. Two different products is.
  • Whether we are given firmware. An image saves days over recovering one from a chip.
  • How many radios. Each protocol brings its own tooling and failure modes.
  • The size of the backend. A handful of endpoints is not a platform with partner APIs and a web console.

What does not move it is how many units you have deployed. Testing one properly tells us about all of them.

What an IoT pentest does not cover

Worth stating plainly, because a test sold as covering everything covers nothing well.

  • It is a snapshot. The findings describe the firmware version and backend state tested, on the dates tested.
  • It is not a source code audit. We work black or grey box unless you hand us the code, which finds a different class of defect.
  • It is not silicon-level analysis. Chip decapping, fault injection and power side-channel work need a specialist lab; if that is your threat model, say so and we scope it.
  • It is not a certification. A pentest produces evidence towards the Cyber Resilience Act, ETSI EN 303 645 or IEC 62443, but ETSI publishes a separate conformance assessment specification, TS 103 701, for testing against that baseline. The two answer different questions.
  • It is not a guarantee, and it fixes nothing. It tells you what a skilled attacker found, in the agreed time, against the agreed scope. We prove, prioritise and explain. Your team ships.

If that reads like a smaller promise than the one you have heard elsewhere, that is the point. The IoT pentesting service page sets out how we scope an engagement; the fastest way to find out whether this is the right test is to describe the product.

C
Carlos Flores
CEO
Compartir:

If any of this looks like a problem you are carrying, half an hour on a call scoping it with a senior pentester is worth more than reading another article.

Hablar con un pentester senior