CVE-2022-32505
Executive Summary
CVE-2022-32505 is a denial-of-service (DoS) vulnerability affecting Nuki Smart Lock devices (versions 3.0 before 3.3.5 and 2.0 before 2.12.4). The vulnerability allows an attacker within Bluetooth Low Energy (BLE) range to send a series of malformed BLE packets, causing the device to partially lose functionality and ultimately reboot. This attack does not require authentication or physical access, only proximity to the target device. The vulnerability is classified as a logic flaw in BLE packet handling (CWE-20: Improper Input Validation). No public exploit code or proof-of-concept (PoC) is currently available, and the EPSS score is 0.0%, indicating low exploitation activity in the wild. However, the lack of a CVSS vector and the physical proximity requirement suggest a medium to low severity, though the impact on availability is significant for smart lock users.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a firmware-level issue in Nuki Smart Lock hardware.
CVSS Breakdown & Threat Level
- CVSS Score: 0.0 (No official vector assigned)
- Attack Vector (AV): Adjacent Network (BLE range, typically <10m)
- Attack Complexity (AC): Low (malformed packets are easy to generate)
- Privileges Required (PR): None
- User Interaction (UI): None
- Scope (S): Unchanged
- Confidentiality (C): None
- Integrity (I): None
- Availability (A): High (device reboot and functionality loss)
- Threat Level: Medium (requires physical proximity, but no authentication and high availability impact)
Deep Dive & Mechanics
The vulnerability lies in the BLE stack of Nuki Smart Lock firmware. The device listens for BLE commands to perform operations like locking/unlocking, status updates, and configuration. By sending a sequence of malformed BLE packets (e.g., invalid length, corrupted headers, or out-of-order fragments), the firmware’s input validation fails to handle the anomalies correctly. This triggers a buffer overflow or an unhandled exception in the BLE processing routine, causing the device to enter a fault state. The fault state leads to partial functionality loss (e.g., inability to respond to legitimate commands) and eventually a watchdog-triggered reboot to recover.
The attack does not require pairing or authentication because the malformed packets are processed before any security checks. The reboot cycle can be repeated indefinitely, rendering the lock unavailable for legitimate use.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
void process_ble_packet(uint8_t *data, uint16_t len) {
// No length validation
uint8_t command = data[0];
uint8_t payload[64];
memcpy(payload, data + 1, len - 1); // Potential overflow if len > 65
// Process command...
}
Patched Code (Conceptual):
void process_ble_packet(uint8_t *data, uint16_t len) {
if (len < 2 || len > 65) {
// Reject malformed packet
return;
}
uint8_t command = data[0];
uint8_t payload[64];
memcpy(payload, data + 1, len - 1); // Safe now
// Process command...
}
The patch adds input validation to reject packets with invalid lengths, preventing buffer overflows and unhandled exceptions.
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A BLE-capable device (e.g., Raspberry Pi with Bluetooth adapter, or a smartphone with BLE app)
- Python with
bleakorbluepylibrary - Target Nuki Smart Lock within BLE range (approx. 10 meters)
Steps:
- Scan for Nuki devices:
sudo hcitool lescan - Identify the target MAC address (e.g.,
AA:BB:CC:DD:EE:FF). - Send malformed BLE packets using a Python script:
import asyncio from bleak import BleakClient async def send_malformed_packets(address): async with BleakClient(address) as client: # Example: Send a packet with invalid length malformed_packet = bytes([0x00] * 100) # Exceeds expected size await client.write_gatt_char("SOME_CHAR_UUID", malformed_packet) # Repeat with variations asyncio.run(send_malformed_packets("AA:BB:CC:DD:EE:FF")) - Observe device reboot or functionality loss.
Note: No public exploit code is available; this is a conceptual demonstration.
Blue Team (Defense & Detection)
Detection:
- Monitor BLE traffic for anomalous packet sizes or malformed headers.
- Use BLE sniffer (e.g., Wireshark with BLE dongle) to capture and analyze packets.
- Look for repeated connection attempts with invalid data.
Mitigation:
- Update firmware to patched version (3.3.5 or 2.12.4).
- Implement BLE packet filtering at the application layer.
- Use BLE encryption and authentication to reject unauthenticated packets.
Indicators of Compromise (IOCs)
Network IOCs:
- BLE packets with length > 65 bytes or malformed headers.
- Repeated BLE connection attempts from unknown devices.
- Device logs showing unexpected reboots or BLE stack crashes.
Host IOCs:
- Nuki Smart Lock firmware version < 3.3.5 (Smart Lock 3.0) or < 2.12.4 (Smart Lock 2.0).
- Device unresponsive to legitimate commands followed by reboot.
Behavioral IOCs:
- Smart lock rebooting multiple times within a short period.
- Inability to lock/unlock via app or keypad.
Detection Engineering
YARA Rule
rule CVE_2022_32505_Nuki_BLE_DoS {
meta:
description = "Detects malformed BLE packets targeting Nuki Smart Lock"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2022-32505"
strings:
$malformed_packet = { 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 } // Example pattern
condition:
$malformed_packet and #malformed_packet > 10
}
Sigma Rule
title: CVE-2022-32505 Nuki Smart Lock BLE DoS
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects repeated malformed BLE packets targeting Nuki Smart Lock
author: Valters IT
date: 2025-04-10
logsource:
category: network
product: bluetooth
detection:
selection:
event: "BLE packet received"
packet_length: ">65"
condition: selection | count() > 10 within 60 seconds
falsepositives:
- Legitimate firmware updates
level: high
Suricata Rule
alert bluetooth any any -> any any (msg:"CVE-2022-32505 Nuki Smart Lock BLE DoS Attempt"; content:"|00 00 00 00 00 00 00 00|"; offset:0; depth:8; threshold:type both, track by_src, count 10, seconds 60; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Update Nuki Smart Lock firmware to version 3.3.5 (Smart Lock 3.0) or 2.12.4 (Smart Lock 2.0).
- Network Segmentation: Ensure smart locks are on a separate VLAN or network segment to limit exposure.
- BLE Monitoring: Deploy BLE intrusion detection systems (IDS) to monitor for anomalous packets.
- Physical Security: Restrict physical access to BLE range (e.g., ensure locks are not accessible from public areas).
- Vendor Communication: Contact Nuki support for additional guidance or patches.
Valters IT
DevSecOps & Cyber Threat Intelligence
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.