Firmware Updates - Matter for security tools

Why Firmware Updates Matter for Security Tools (And What Happens Without Them)

In 2016, the Mirai botnet infected over 600,000 IoT devices - cameras, DVRs, routers - and used them to launch the largest DDoS attack ever recorded at that time, taking down major internet infrastructure for hours. The devices were vulnerable to trivially simple attacks: default credentials, no authentication, known CVEs that had been published for months.

Most of those devices couldn't be updated. Not "no one updated them" - they literally had no update mechanism. The manufacturer had shipped firmware and moved on. When vulnerabilities were discovered, there was nothing anyone could do except unplug the device.

For a security tool specifically - a device whose purpose is to test wireless defenses - shipping without a firmware update mechanism is a special kind of irony. This article covers why firmware updates matter, what the cost of not updating looks like, and how the BLEShark Nano's OTA approach compares to alternatives.

Table of Contents

The Mirai Lesson

Mirai's success wasn't the result of sophisticated exploitation. The source code (leaked in September 2016) shows a brute-force credential scanner that tried 61 default username/password combinations against Telnet ports. If it found a match, it logged in, downloaded a payload, and enrolled the device in the botnet. That's it.

The devices were running firmware from 2012-2015. Some had CVEs from before they shipped - vulnerabilities that were discovered during research that the manufacturer never patched. Others had vulnerabilities found after shipping, with no patch ever released. The manufacturers had no process for issuing firmware updates. Many didn't even have a website section for security advisories.

The result was hundreds of thousands of devices permanently compromised, with no remediation available to device owners short of unplugging them. The botnet used these devices to generate traffic volumes (1.2 Tbps in the October 2016 Dyn attack) that no single organization could absorb, disrupting Twitter, GitHub, Netflix, Reddit, and dozens of major sites.

The Mirai incident is directly responsible for the IoT security regulations that followed in the US, EU, and UK - including requirements that connected devices have a vulnerability disclosure policy and a mechanism to receive security updates.

The CVE Lifecycle for Embedded Devices

When a vulnerability is found in an embedded device, it follows a predictable path:

Discovery: A researcher or threat actor finds a vulnerability - a buffer overflow, a hardcoded credential, an unauthenticated API endpoint, a weak random number generator used for key generation.

Disclosure: If discovered by a researcher, responsible disclosure typically gives the manufacturer 90 days to produce a patch before public disclosure. If discovered by a threat actor, it goes directly to exploitation or underground sale with no warning to the manufacturer.

Patch development: The manufacturer develops a patched firmware. This takes anywhere from days (a one-line config fix) to months (a fundamental architectural change to the WiFi stack).

Patch distribution: The patch is distributed to devices. This is where the process breaks down for IoT devices without OTA. If getting the patch requires users to download a binary, find the right flashing tool, connect via USB, and follow a technical procedure - almost no one does it.

Exploitation window: The period between public disclosure of a CVE and widespread patching is the exploitation window. Automated bots scan the internet for vulnerable devices within hours of a CVE being published. Without OTA, this window stays open indefinitely.

For devices with OTA updates, the patch distribution step is as simple as "connect to WiFi, firmware updates automatically." The exploitation window shrinks from months-to-years to days-to-weeks.

USB Flashing vs OTA: The User Behavior Gap

The difference between OTA and USB flashing isn't technical - it's behavioral. OTA makes updates easy enough that most users actually do them. USB flashing creates enough friction that most users skip them.

Consider the typical USB firmware update process for an embedded device:

  1. Notice a firmware update announcement (email, website, social media)
  2. Find the firmware download page
  3. Download the correct binary for your specific hardware version
  4. Install the required flashing tool (often OS-specific, sometimes requiring Python, specific USB drivers, specific Python library versions)
  5. Put the device in flashing mode (sometimes requires holding a specific button during power-on, or a special physical jumper)
  6. Connect USB cable, find the correct COM port or device path
  7. Run the flash command
  8. Wait 2-5 minutes for the flash to complete
  9. Reboot and verify

For someone comfortable with command-line tools and embedded development, this is annoying but manageable. For a network administrator who bought the device for a specific use case, or a student using it in a classroom, this is an hour of troubleshooting that may or may not work.

Research on software update adoption consistently shows that update rates drop dramatically with each step added to the process. A one-click update gets 70-90% adoption. A multi-step technical process gets 10-20% at best.

This matters for security. A 20% update rate means 80% of deployed devices stay on the vulnerable version until they're replaced.

Updates Are Features Too

Security is only one reason firmware updates matter. For a device whose capabilities are actively expanding, updates add features that didn't exist when you bought the device.

The BLEShark Nano has received updates adding new app modes, expanding the BLE spam device profiles, improving the DuckyScript editor, adding new IR code databases, and expanding mesh networking capabilities. A device bought at launch runs significantly more features than the original firmware contained.

Without OTA, getting these features would require USB flashing - or accepting a static device that never gains new capabilities. The device you bought would be the device you're stuck with. For hardware that's being actively developed, that means constantly falling behind as the community using newer firmware has access to capabilities you don't.

Bug fixes also improve reliability and usability in ways that aren't "security" but are still important. A WiFi scanner that misses certain AP types due to a parsing bug. An IR remote library that doesn't handle a specific TV brand's timing correctly. A BLE scanner that crashes on a malformed advertisement. These are the normal bugs that ship in v1.0 and get fixed in subsequent releases. OTA means those fixes reach users automatically.

The Security Tool Irony

A security testing tool that ships without a firmware update mechanism has a specific problem: if a security vulnerability is found in the tool itself, there's no practical way to fix it. The tool designed to find vulnerabilities in other systems becomes a vulnerability itself.

This has happened with well-known security tools. WiFi testing adapters running vulnerable drivers. USB-based testing hardware with unauthenticated debug interfaces. These vulnerabilities aren't hypothetical - they're documented CVEs affecting real tools.

There's also the operational security consideration. A security tool used in professional environments should be updatable to match the environments it tests. WPA3 support, updated BLE attack profiles, new protocol implementations - these aren't available in static firmware. A team doing security assessments needs their tools to keep pace with the environments they're assessing.

stateDiagram-v2
    [*] --> Current: Running v1.0

    Current --> Checking: Periodic update check
    Checking --> Current: No update available
    Checking --> Downloading: New version found

    Downloading --> Verifying: Download complete
    Downloading --> Error: Download failed
    Error --> Checking: Retry after delay

    Verifying --> Flashing: Signature valid
    Verifying --> Error: Signature mismatch

    Flashing --> Rebooting: Write complete
    Flashing --> Error: Flash write failed

    Rebooting --> Testing: Boot into new firmware
    Testing --> Updated: Self-test passed
    Testing --> RollingBack: Self-test failed

    RollingBack --> Current: Reverted to v1.0
    Updated --> [*]: Running v2.0

Firmware update state machine showing the safe transition from current to updated firmware, with error handling and automatic rollback

BLEShark Nano's OTA Approach

The BLEShark OTA process is HTTPS with certificate verification (no MITM possible), SHA256 hash verification of the downloaded binary, dual-partition flash layout with rollback capability, and version checking that prevents downgrade attacks. The technical details are covered in the companion article on how ESP32 OTA works.

From a user perspective: navigate to Settings, select OTA Update, connect to WiFi, wait a few minutes. The process is the same whether you're on the first firmware release or the tenth. Updates survive even if the device loses power during the download (the active partition is never overwritten until the new partition is verified and the device explicitly swaps).

The multi-network OTA feature - saving multiple WiFi networks for updates - addresses the practical reality that users operate the BLEShark in multiple locations. Home, office, lab, conference - different WiFi networks at each. The update works wherever you are.

stateDiagram-v2
    [*] --> Current: Running v1.0

    Current --> Checking: Periodic update check
    Checking --> Current: No update available
    Checking --> Downloading: New version found

    Downloading --> Verifying: Download complete
    Downloading --> Error: Download failed
    Error --> Checking: Retry after delay

    Verifying --> Flashing: Signature valid
    Verifying --> Error: Signature mismatch

    Flashing --> Rebooting: Write complete
    Flashing --> Error: Flash write failed

    Rebooting --> Testing: Boot into new firmware
    Testing --> Updated: Self-test passed
    Testing --> RollingBack: Self-test failed

    RollingBack --> Current: Reverted to v1.0
    Updated --> [*]: Running v2.0

Firmware update state machine showing safe transition from current to updated firmware, with error handling and automatic rollback

The Real Cost of Not Updating

The cost of not updating firmware is diffuse and delayed, which is why it's easy to rationalize. "Nothing bad has happened yet" is always true right up until something bad happens.

For IoT devices in general: the Mirai botnet demonstrated the cost at scale. Hundreds of thousands of compromised devices used as weapons. Individual device owners suffered nothing directly - their cameras still worked, their DVRs still recorded. The cost was externalized onto the internet infrastructure that got DDoS'd.

For security tools specifically: an outdated tool gives false confidence. If the tool's WiFi scanning module has a bug that misses certain AP types, you're not getting a complete picture of the wireless environment. If the BLE scanner's OUI lookup database is months old, you're misidentifying device manufacturers. If a new protocol variant has been added to BLESpam but you're running old firmware, you're testing against an incomplete threat model.

The devices that end up on firmware from 2023 running in 2026 are the ones that will be compromised, will generate false assessment results, or will simply fail to test what they're supposed to test. The effort required to stay current with OTA is near zero. The cost of not doing it grows over time.

What Gets Updated in a Typical Release

Bug fixes: Parsing issues in WiFi scanning, timing fixes for IR protocols, BLE stack stability improvements, display rendering corrections.

Security improvements: TLS certificate updates for the OTA server, fixes for any vulnerabilities discovered in the firmware itself, hardening of the file portal against malformed uploads.

Performance improvements: Faster BLE scanning, more accurate RSSI readings, reduced power consumption in specific modes.

The changelog is published on GitHub with each release. From the BLEShark settings menu, you can check your current firmware version. The OTA update screen shows what version is available on the server before you initiate the download. Reading the changelog before updating is good practice - it tells you what changed and whether any settings or behaviors you rely on have been modified.

Get BLEShark Nano

Back to blog

Leave a comment