IoT & Embedded Device Testing

How a copied card ID could open a connected lock

Client
Connected-device maker
Service
IoT and embedded device penetration testing
Engagement
Multi-week, fixes in 30 days
Verified
Every fix retested by ioSENTRIX
The challenge

What did the client need?

A connected-device maker needed an attacker’s view of its lock before launch, both for its own release and because a customer required independent testing. Over a multi-week engagement, ioSENTRIX tested the device from the circuit board to the update channel.

Engagement details

Client
Connected-device maker
Product
Connected lock with card access and a cloud portal
Driver
Product launch and a customer requirement
Scope
Boards and enclosure, firmware, card reader, wired interfaces, OTA updates
Access
Firmware source and production binaries; no debug build
Engagement
A multi-week engagement; fixes rolled out within 30 days
Verified
Every fix retested by ioSENTRIX
Tested by
ioSENTRIX hardware and firmware testers
Our approach

How did ioSENTRIX approach it?

These were logic flaws on a failure path, not known vulnerabilities, so an automated scanner had nothing to match them against. Finding them took reading the firmware source against the production binary and testing the hardware by hand.

Also found: a stack overflow on long card UIDs, UID cloning on legacy cards, a flash-read overflow, build paths in the binary and missing NULL checks in update handlers.

What we found

What did ioSENTRIX find?

Two ways to open the lock without a trace, both closed and verified.

HighFinding 1

A copied card ID was enough to open the door

The firmware’s check for the expected card application used a bitwise OR, so every card passed it. When the MIFARE DESFire cryptographic step then failed, the firmware fell back to the card’s UID alone, an identifier read before any key is used.

Business impact. Card entry, the product’s core promise, could be defeated with a copied identifier instead of a stolen card.

MediumFinding 2

Opening the enclosure gave a second, silent way in

There was no tamper detection. Inside, our testers found ways to drive the lock open directly, bypassing its processor, so no unlock event, log entry or alert reached the portal.

Business impact. A break-in by this route would leave no trace, for the customer or the maker.

The physical bypass methods are deliberately withheld from this publication.

Two separate paths to an unlocked door, neither of them logged
Path 1 · copied card ID · High
  1. 1Card presentedenrolled UID copied
  2. 2Check passesbitwise OR succeeds
  3. 3UID-only fallbackcrypto fails, UID wins
Path 2 · physical access · Medium
  1. 1Enclosure openedno tamper alert
  2. 2Lock driven openmethod withheld
  3. 3Processor skippedlogging never runs
Outcome: Door opens (no event, no log, no alert)
The impact

What changed as a result?

We found that a copied card ID could open the door, and that anyone inside the enclosure could open it with nothing logged. The client rolled out fixes for every finding within 30 days, and ioSENTRIX retested each one.

10+
findings, 2 of them High severity
30
days for the client to roll out every fix
100%
of fixes verified by ioSENTRIX retest

How many findings, and how severe?

10+ findings in total, including 2 High.

  • High 2
  • Medium
  • Low
  • Info

What changed after the test?

  • Card authentication. The application check compares correctly; the UID-only fallback is gone.
  • Physical bypass. The lock detects movement it did not command; tamper sensors alert the portal.
  • Memory safety. UIDs and flash reads are length-checked; update handlers check for NULL.
  • Release hygiene. Build paths no longer ship in the firmware binary.

✓ Verification: All fixes rolled out within 30 days · verified by ioSENTRIX retest.

Key insight

The encryption was sound. The way in was what the lock did when encryption failed.

Lessons

Lessons for device makers

01

Test the failure path

The encryption was sound. The fallback was the way in.

02

A UID is not a credential

It identifies a card. It does not prove the card is genuine.

03

Expect the enclosure to open

Limit exposed interfaces and watch telemetry (ETSI EN 303 645, 5.6-3 and 5.10-1).

  1. Severity rated on a five-level likelihood and impact matrix based on NIST SP 800-30 Rev. 1.
  2. ETSI EN 303 645 V2.1.1 (2020-06), cited as alignment guidance, not a compliance claim.
Next step

Planning a device release? See a sample IoT test report or book a strategy session on your hardware, firmware and cloud.

Service
IoT and embedded device penetration testing
Explore the service

Details in this case study are anonymised and generalised. Methods that could harm other products are withheld.

FAQ

Frequently asked questions

What did ioSENTRIX test in this case study?

A connected-device maker needed an attacker’s view of its lock before launch, both for its own release and because a customer required independent testing. Over a multi-week engagement, ioSENTRIX tested the device from the circuit board to the update channel.

What was the most serious issue?

A copied card ID was enough to open the door. Card entry, the product’s core promise, could be defeated with a copied identifier instead of a stolen card.

How many findings were there, and how severe?

10+ findings in total, including 2 High.

Were the fixes verified?

All fixes rolled out within 30 days · verified by ioSENTRIX retest.

Which ioSENTRIX service does this case study cover?

IoT and embedded device penetration testing, delivered by the ioSENTRIX hardware and firmware testers.

How to get started

Ready to strengthen your security? Fill out our quick form, and a cybersecurity expert will reach out to discuss your needs and next steps.
DecorativeDecorative