Марк Ньюлин (Marc Newlin), который выявил уязвимость MouseJack семь лет назад, раскрыл информацию о аналогичной уязвимости (CVE-2023-45866), затрагивающей Bluetooth-стеки Android, Linux, macOS и iOS. Эта уязвимость позволяет осуществить подмену нажатий клавиш путем симуляции активности устройства ввода, подключенного по Bluetooth. Получив доступ к клавиатурному вводу, злоумышленник может выполнять различные действия, такие как выполнение команд в системе, установка приложений и перенаправление сообщений.
Уязвимость вызвана тем, что хостовые драйверы HID (Human Interface Device) для Bluetooth-устройств имеют режим, позволяющий удаленному периферийному устройству создавать и устанавливать зашифрованные соединения без аутентификации. Такие подключенные устройства могут передавать клавиатурные сообщения, и HID-стек их обрабатывает, что открывает возможность для атаки по подмене HID-сообщений, выполняемой без участия пользователя. Эта атака может быть проведена на расстоянии до 100 метров от жертвы.
Механизм сопряжения устройств без аутентификации определен в спецификации Bluetooth и, в зависимости от настроек Bluetooth-стека, позволяет подключать устройство без подтверждения от пользователя. Например, в Linux, при использовании Bluetooth-стека BlueZ, для скрытого сопряжения Bluetooth-адаптер должен находиться в режиме обнаружения и подключения. В Android достаточно включить поддержку Bluetooth. В iOS и macOS для успешной атаки должен быть включен Bluetooth, а также подключена беспроводная клавиатура.
Возможность подмены ввода была продемонстрирована в Ubuntu 18.04, 20.04, 22.04 и 23.10 с Bluetooth-стеком на базе пакета BlueZ. ChromeOS уязвимости не подвержен, так как его настройки Bluetooth-стека не позволяют соединения без аутентификации. В Android уязвимость затрагивает устройства с версиями платформы от 4.2.2 до 14. В macOS уязвимость была продемонстрирована на MacBook Pro 2022 с процессором Apple M2 и macOS 13.3.3, а также на MacBook Air 2017 с процессором Intel и macOS 12.6.7. В iOS уязвимость была продемонстрирована на iPhone SE с iOS 16.6. Включение режима Lockdown не обеспечивает защиты от атаки на macOS и iOS.
В Linux уязвимость была устранена в кодовой базе Bluez путем установки настройки «ClassicBondedOnly» в значение «true», включающее безопасный режим, который разрешает установку соединений только после сопряжения. Ранее было установлено значение «false», которое, ради совместимости с некоторыми устройствами ввода, снижало уровень безопасности.
В Bluetooth-стеке Fluoride, используемом в последних версиях Android, уязвимость устранена путем обязательного применения аутентификации для всех зашифрованных соединений. Исправления для Android были выпущены только для веток 11-14. Для устройств Pixel уязвимость была устранена в декабрьском обновлении прошивки. Для выпусков Android с 4.2.2 по 10 уязвимость остается не устраненной.
>>> Подробности