Wireless · IoT · Field Guide

Wireless Hacking Unleashed: Six Surfaces Your AppSec Program Is Probably Missing

May 2, 2026 14 min read Wi-Fi · BT · BLE · RF · NFC · IoT

An unauthenticated attacker doesn't always need a CVE. Sometimes they just need a Wi-Fi adapter that supports monitor mode and 90 seconds of unsupervised time near your office. Sometimes a $30 BLE dongle. Sometimes an HackRF and a YouTube tutorial. Wireless protocols sit at the foot of the stack — below TLS, below your WAF, below your SIEM — and the moment your product ships with a radio in it, you have inherited a threat model that AppSec teams are usually not equipped to reason about.

This post is an opinionated tour of the six wireless surfaces every team building connected products has to think about: Wi-Fi, Bluetooth Classic, BLE, sub-GHz RF, NFC / RFID and the IoT transports that ride on top (Zigbee, MQTT, CoAP, LoRa). For each surface we cover the dominant threats, the famous attacks worth knowing by name, and — importantly for an AppSec audience — what static analysis on the source you already have in git can actually catch.

Why this is suddenly an AppSec problem. Five years ago wireless lived with the hardware team and AppSec lived with the web team. In 2026, the firmware repo has the same CI, the same code review, the same release pipeline as the web app. Someone has to scan it. That's you now.

The mental model: six surfaces

"Wireless" is a category, not a protocol. The threat models for each surface are different enough that bundling them together is how vulnerabilities get missed. Keep them separate:

1. Wi-Fi (IEEE 802.11)

Range: ~50–100m typical. Layer: link.

Famous attacks: KRACK (CVE-2017-13077–13088), Pixie Dust on WPS, Reaver brute-force, Evil Twin / rogue AP, deauthentication floods, downgrade to WPA-TKIP, captive-portal phishing.

2. Bluetooth Classic (BR/EDR)

Range: ~10–100m. Layer: link.

Famous attacks: BlueBorne (CVE-2017-0781 et al.), KNOB (CVE-2019-9506), legacy pairing PIN brute-force, persistent discoverable mode, weak link-key reuse.

3. Bluetooth Low Energy (BLE)

Range: ~30m. Layer: link.

Famous attacks: BleedingBit (CVE-2018-16986/16987), Just Works MitM, static-passkey replay, GATT characteristics with no authorisation, reusing bonding keys across devices, address-spoofing on non-resolvable random addresses.

4. Sub-GHz RF (315 / 433 / 868 / 915 MHz)

Range: 100m–15km. Layer: physical / link.

Famous attacks: RollJam against rolling-code remotes, plain replay against fixed-code remotes, CAN-bus injection via wireless gateways, Tesla key-relay, garage opener cloning, smart-meter snooping, plain-LoRa eavesdropping.

5. NFC / RFID (13.56 MHz / 125 kHz)

Range: ~10cm. Layer: physical.

Famous attacks: Crypto1 break against MIFARE Classic, UID-only authorisation cloning with Proxmark3, NFC relay over the internet, magic-card bypass, default keys (FFFFFFFFFFFF) on production cards.

6. IoT transports (Zigbee, MQTT, CoAP, LoRa)

Range: varies. Layer: application.

Famous attacks: Zigbee with the well-known default trust-centre key 5A 69 67 42 65 65 41 6C 6C 69 61 6E 63 65 30 39 (literally the ASCII "ZigBeeAlliance09"), MQTT brokers exposed without TLS or auth, CoAP without DTLS, LoRaWAN with default join keys, ESP-IDF builds with hardcoded SSID + PSK.

Wi-Fi: still where most teams fail

WPA2-PSK won the standards war and then everyone stopped paying attention. But the configuration surface is wide and the failure modes are durable:

anti-pattern (ESP-IDF)
#define WIFI_SSID  "AcmeCorp-Internal"
#define WIFI_PSK   "summer2024"
wifi_config_t cfg = {
    .sta = { .ssid = WIFI_SSID, .password = WIFI_PSK,
             .threshold.authmode = WIFI_AUTH_WPA_PSK }, // accepts TKIP
};

Three problems on six lines: the SSID is leaking your tenant's name, the PSK is in the firmware, and the auth mode accepts WPA — meaning a rogue AP can downgrade clients to TKIP. Static analysis catches all three without ever touching a radio.

Bluetooth Classic: legacy pairing is still alive

Bluetooth 2.1 (2007) introduced Secure Simple Pairing (SSP) and made it mandatory. And yet nineteen years later, a depressing number of devices — especially industrial sensors, medical peripherals and old IoT gateways — still pair with a 4-digit PIN. With KNOB (CVE-2019-9506), an attacker can negotiate the encryption key down to 1 byte of entropy and brute-force it in milliseconds. Static giveaways:

BLE: the protocol that made Just Works famous

BLE pairing has six modes, and the choice matters. The static analysis question is: which one are we picking, and is it appropriate for the data we handle?

Two more BLE static tells worth automating:

Sub-GHz RF: the wild west

Sub-GHz is where AppSec instincts fail hardest, because there is no SDK to scan. But there is still source code:

NFC / RFID: short range is not security

"It's only 10cm" is not a threat-model argument, especially in 2026 when NFC-relay attacks over the internet are a stable hobby project. The static analysis pattern most worth flagging is MIFARE Classic still in production. Crypto1, the cipher MIFARE Classic uses, was broken academically in 2008 and weaponised in commodity tools like Proxmark3 and Flipper Zero. Any source that still references MIFARE_CLASSIC, FFFFFFFFFFFF default keys, or builds against MIFARE Classic UIDs as the only authorisation factor is a finding.

IoT transports: where the blast radius lives

Wi-Fi gets you onto the network. Bluetooth gets you near a peripheral. But the application-level damage on connected devices is usually done over IoT transports:

What an AppSec scanner can actually do here

You will not catch a KNOB attack with a static scanner. You will not detect a rogue AP from source. But you can — reliably and at zero radio cost — catch the configuration mistakes that make those attacks trivial. SF365 ships a dedicated WirelessScanner as the 12th engine in its orchestrator, with 18 detection rules across the six surfaces above:

And alongside the engine, the SF365 SecretScanner ships 10 IoT/wireless cloud secret patterns that the AppSec scanners you already own do not have: Azure IoT Hub Device SAS, AWS IoT MQTT endpoints, GCP IoT device JWTs, Particle.io tokens, Tuya cloud secrets, SmartThings PATs, HomeKit setup codes, MQTT URLs with embedded credentials, and ESP-IDF Wi-Fi credential defines.

Compliance: the missing baseline

Each surface has authoritative guidance — NIST SP 800-153 for Wi-Fi, NIST SP 800-121 Rev 2 for Bluetooth, NIST SP 800-97 for 802.1X/EAP, IEEE 802.11i for WPA2 cryptographic constructions — but no one publishes a single auditable framework that stitches them together for a connected-device program. SF365 ships one: a 24-control Wireless Security Baseline covering WIFI.01–07, BT.01–08, RF.01–03, NFC.01–02, and IOT.01–04, exportable as a PDF with per-control evidence.

Where to start tomorrow

  1. Inventory which radios your products actually use. Half the teams who think they "ship Wi-Fi" also ship BLE for commissioning and forgot.
  2. For each surface, agree on which threats are in scope and which are accepted risk. "We accept Just Works for non-sensitive characteristics" is a position; "we don't know" is not.
  3. Add static checks to CI for the failure modes above. Most are exact strings or shallow regex matches.
  4. Adopt a baseline (the SF365 24-control set, or your own). The point is to make the answer to "are we OK on Wi-Fi?" auditable rather than vibes-based.
  5. Run a benchmark against a known-vulnerable target like IoT-Goat, DVRF or BLE CTF so you can prove the detections fire.

SF365 ships a Wireless Engine and a 24-control Baseline today

If your roadmap includes Bluetooth, Wi-Fi or IoT firmware, the AppSec platform you have probably wasn't built for this. SF365 is.

Request a Wireless Demo