
PoC Python pour CVE-2026-0101 démontrant l'usurpation d'adresse BLE par rejeu d'une adresse privée résoluble capturée afin d'usurper l'identité d'un périphérique de confiance.
# ble_peripheral_sim.py - Simulated BLE peripheral with weak RPA verification
import asyncio, random, hashlib
from bleak import BleakServer, BleakScanner
# (Simplified - we'll use a basic socket to simulate BLE bonding)
# Store bonded IRK (Identity Resolving Key)
irk = b'\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10'
def resolve_rpa(rpa, irk):
# This is a stub: real resolution uses AES-128; vulnerability: attacker can brute-force or replay
# Assume the peripheral accepts any RPA that decrypts to a known hash without replay protection.
return True # always accept for demo
# Simulating the peripheral: wait for connection, check RPA, if resolved, trust.
print("Peripheral running, accepting any RPA...")
Un périphérique Bluetooth Low Energy utilisant des adresses privées résolubles (RPA) ne met pas en œuvre de cache anti-rejeu. Un attaquant qui observe une RPA valide peut déconnecter l'appareil apparié et se reconnecter en utilisant la même RPA, usurpant ainsi l'identité de l'appareil de confiance.
Exécutez la simulation :
python ble_peripheral_sim.py
# In another terminal:
python exploit_ble_spoof.py
L'exploit capture la RPA diffusée et se reconnecterait en tant qu'appareil de confiance.