Марко Нюлин (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 с CPU Apple M2 и macOS 13.3.3, както и в MacBook Air 2017 с CPU 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 уязвимостта остава неизправна.
Източник: opennet.ru
