
Python PoC для CVE-2026-0101, демонстрирующий спуфинг BLE-адреса путём повторного воспроизведения захваченного разрешаемого приватного адреса (Resolvable Private Address) для имитации доверенного периферийного устройства.
# 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...")
Периферийное устройство Bluetooth Low Energy, использующее резолвируемые приватные адреса (RPA), не реализует кэш повторов. Злоумышленник, перехвативший действительный RPA, может отключить сопряжённое устройство и подключиться заново, используя тот же RPA, выдавая себя за доверенное устройство.
Запустите симуляцию:
python ble_peripheral_sim.py
# In another terminal:
python exploit_ble_spoof.py
Эксплойт перехватывает RPA из рекламных пакетов и подключается повторно как доверенное устройство.