Марк Нюлин (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 уязвимостта остава неотстранена.
Източник: linux.org.ru
