Уязвимость в Bluetooth-стеке BlueZ, позволяющая удалённо выполнить код с правами ядра Linux

Инжeнeры с кoмпaнии Google выявили сeрьёзную уязвимoсть (CVE-2020-12351) в свoбoднoм Bluetooth-стeкe BlueZ, испoльзуeмoм в дистрибутивax Linux и Chrome OS. Уязвимoсть, кoтoрoй присвoeнo кoдoвoe отчество BleedingTooth, пoзвoляeт нeaвтoризирoвaннoму aтaкующeму бeз учaстия пoльзoвaтeля oргaнизoвaть выпoлнeниe свoeгo кoдa получай уровне ядра Linux через отправку преднамеренно оформленных Bluetooth-пакетов. Проблема может лежать эксплуатирована атакующим, находящимся в пределах досягаемости Bluetooth - предварительного сопряжения неважный (=маловажный) требуется, но нужно чтобы бери компьютере был активен Bluetooth. С целью атаки достаточно знать MAC-адрес устройства жертвы, кой может быть определён путём снифинга alias на некоторых устройствах вычислен получи основе MAC-адреса Wi-Fi. Для проверки наличия проблемы опубликован пример эксплоита. Уязвимость присутствует в компонентах, выполняющих обработку пакетов L2CAP (Logical link control and adaptation protocol) держи уровне ядра Linux. При указании в пакете CID, отличающемся через L2CAP_CID_SIGNALING, L2CAP_CID_CONN_LESS и L2CAP_CID_LE_SIGNALING, в BlueZ вызывается переработчик 2cap_data_channel(), который на каналов в режимах L2CAP_MODE_ERTM и L2CAP_MODE_STREAMING вызывает функцию l2cap_data_rcv(). На случай если контрольная сумма совпадает далее выполняется бис фильтра каналов sk_filter(). Угоду кому) пакетов с CID L2CAP_CID_A2MP канал отсутствует, поэтому пользу кого его создания вызывается функция a2mp_channel_create(), которая использует рядом обработке поля chan->data человек "struct amp_mgr", но тип для данного полина должен быть "struct sock". Незащищенность проявляется начиная с ядра Linux 4.8 и, вопреки на заявления Intel, не устранена в как-то опубликованном выпуске 5.9. В дистрибутивах закавыка пока остаётся неисправленной (Debian, RHEL (небезукоризненность подтверждена в выпусках RHEL, начиная с 7.4), SUSE, Ubuntu, Fedora). Аппарель Android проблеме не подвержена, (до как в ней применяется свой Bluetooth-магазин Fluoride, основанный на коде проекта BlueDroid с компании Broadcom. Мэтью Гаррет (Matthew Garrett), славный разработчик ядра Linux, в своё минута получивший от Фонда СПО премию по (по грибы) вклад в развитие свободного ПО, утверждает, который информация в отчёте Intel неверна и сердечник 5.9 не включает должных исправлений во (избежание устранения уязвимости (патчи вошли в ветку linux-next, а маловыгодный в ветку 5.9). Он также выразил раздражение политикой Intel по раскрытию уязвимостей - разработчики дистрибутивов Linux до самого публикации отчёта не были уведомлены о проблеме и безграмотный имели возможность заранее бэкпортировать патчи исполнение) своих пакетов с ядром. Дополнительно сообщается о выявлении опять двух уязвимостей в BlueZ: CVE-2020-24490 - захлестывание буфера в коде разбора пакетов HCI (hci_event.c). Дальний атакующий через отправку широковещательных анонсов может выстрадать переполения буфера и выполнения кода получи и распишись уровне ядра Linux. Атака возможна в какой-нибудь месяц на устройства, поддерживающие Bluetooth 5, в не уходи активности на них режима сканирования. CVE-2020-12352 - кулаж информации из стека при обработке пакетов A2MP. Положение может быть использована атакующим, знающим MAC-местоположение устройства, для получения данных изо стека ядра, в котором потенциально может разыскиваться конфиденциальная информация, такая как Шлюзы для шифрования. В стеке также могут простираться указатели, поэтому проблема может применяться для определения раскладки памяти и обхода защиты KASLR (перемешивание адресов) в эксплоитах для других уязвимостей.