Уязвимость реализаций Bluetooth позволяет без аутентификации подключаться к устройствам Linux, Android, macOS, iOS и выполнять произвольные команды, имитируя клавиатурный ввод с помощью скриптов.
Проблему безопасности, которой был присвоен идентификатор CVE-2023-45866, обнаружил специалист по реверс-инжинирингу из SkySafe Марк Ньюлин (Marc Newlin). В 2016 году он же выявил похожую возможность подмены в беспроводных устройствах ввода семи вендоров (атака получила название MouseJack).
В рамках нового исследования было установлено, что устройство с включенным Bluetooth можно заставить взаимодействовать с фейковой клавиатурой, притом без ведома пользователя. Механизм сопряжения, не требующего аутентификации, определен в спецификациях Bluetooth 13-летней давности, однако ошибки в реализации протокола могут открыть возможность для злоупотреблений.
Эксплойт-атака в таких случаях незамысловата, ее можно провести с Linux-машины с использованием обычного адаптера Bluetooth. После установки связи с целевым телефоном или компьютером атакующий сможет через инъекцию нажатия клавиш выполнять на нем любые действия при условии, что они не требуют пароля или биометрической аутентификации.
Как оказалось, CVE-2023-45866 даже старше MouseJack: Ньюлин смог воспроизвести атаку на смартфон BLU DASH 3.5 под управлением Android 4.2.2 (эта сборка была выпущена в 2012 году).
Согласно результатам исследования, уязвимость составляет угрозу для следующих устройств:
- Android с включенным Bluetooth;
- Linux со стеком протоколов BlueZ при условии, что Bluetooth доступен для обнаружения и связи;
- iOS и macOS при активном Bluetooth и наличии сопряжения с Magic Keyboard; эксплойт возможен даже при включенном режиме блокировки (LockDown Mode).
О своем открытии исследователь сообщил Apple, Google, Canonical (развивает проект Ubuntu) и комьюнити Bluetooth SIG. Публикацию подробностей и PoC-кода он решил отложить до тех пор, пока все не будет пропатчено.
Ответ Google гласил, что исправления для Android версий с 11 по 14 уже доступны затронутым OEM-провайдерам, а Pixel-устройства получат их OTA в составе декабрьских обновлений.
В Linux данная проблема была решена еще 2020 году (CVE-2020-0556), однако Ньюлин обнаружил, что фикс работает только в ChromeOS. В других дистрибутивах он по умолчанию неактивен — исследователь в этом убедился, проверив Ubuntu 18.04, 20.04, 22.04 и 23.10.
Патч для стека BlueZ вышел два месяца назад. Компания Apple получила отчет багхантера еще в августе, но дату выпуска патчей пока не озвучила.