
캡처된 Resolvable Private Address를 재생하여 신뢰할 수 있는 주변 기기를 사칭하는 BLE 주소 스푸핑을 시연하는 CVE-2026-0101용 Python PoC입니다.
# 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...")
해석 가능한 개인 주소(RPA)를 사용하는 Bluetooth Low Energy 주변 장치가 재생(replay) 캐시를 구현하지 않습니다. 공격자는 유효한 RPA를 관찰한 후 페어링된 장치의 연결을 끊고 동일한 RPA로 다시 연결하여 신뢰할 수 있는 장치로 위장할 수 있습니다.
시뮬레이션 실행:
python ble_peripheral_sim.py
# In another terminal:
python exploit_ble_spoof.py
이 익스플로잇은 광고된 RPA를 캡처하여 신뢰된 장치로 다시 연결합니다.