Уразлівасці ў ядры Linux, выдалена эксплуатаваныя праз Bluetooth

У ядры Linux выяўленая ўразлівасць (CVE-2022-42896), якая можа патэнцыйна выкарыстоўвацца для арганізацыі выдаленага выканання кода на ўзроўні ядра праз адпраўку адмыслова аформленага L2CAP-пакета праз Bluetooth. Акрамя таго, выяўлена яшчэ адна падобная праблема (CVE-2022-42895) у апрацоўшчыку L2CAP, якая можа прывесці да ўцечкі змесціва памяці ядра ў пакетах са звесткамі аб канфігурацыі. Першая слабасць выяўляецца са жніўня 2014 года (ядро 3.16), а другая з кастрычніка 2011 года (ядро 3.0). Уразлівасці ўхіленыя ў выпусках ядра Linux 6.1.0, 6.0.8, 4.9.333, 4.14.299, 4.19.265, 5.4.224, 5.10.154 і 5.15.78. Прасачыць за выпраўленьнем у дыстрыбутывах можна на наступных старонках: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.

Для дэманстрацыі магчымасці здзяйснення выдаленага нападу апублікаваны прататыпы эксплоітаў, якія працуюць у Ubuntu 22.04/XNUMX. Для правядзення нападу зламыснік павінен знаходзіцца ў межах дасяжнасці Bluetooth - папярэдняга спалучэння не патрабуецца, але трэба каб на кампутары быў актыўны Bluetooth. Для нападу дастаткова ведаць MAC-адрас прылады ахвяры, які можа быць вызначаны шляхам сніфінгу або на некаторых прыладах вылічаны на аснове MAC-адрасы Wi-Fi.

Першая ўразлівасць (CVE-2022-42896) выкліканая зваротам да ўжо вызваленай вобласці памяці (use-after-free) у рэалізацыі функцый l2cap_connect і l2cap_le_connect_req – пасля стварэння канала праз callback-выклік new_connection, для яго не выстаўлялася блакіроўка, але наладжваўся ), па заканчэнні таймаўту выклікае функцыю l2cap_chan_timeout і ачышчальны канал без праверкі завяршэння працы з каналам у функцыях l2cap_le_connect*.

Па змаўчанні таймаўт складае 40 секунд і меркавалася што стан гонкі пры такой затрымцы не можа паўстаць, але апынулася, што з-за іншай памылкі ў апрацоўшчыку SMP можна дамагчыся імгненнага выкліку таймера і дасягненні стану гонкі. Праблема ў l2cap_le_connect_req можа прывесці да ўцечкі памяці ядра, а ў l2cap_connect да перазапісу змесціва памяці і выкананні свайго кода. Першы варыянт нападу можа быць здзейснены пры выкарыстанні Bluetooth LE 4.0 (з 2009 гады), у другі пры выкарыстанні Bluetooth BR/EDR 5.2 (з 2020 гады).

Другая ўразлівасць (CVE-2022-42895) выклікана ўцечкай рэшткавых дадзеных з памяці ў функцыі l2cap_parse_conf_req, што можа быць скарыстана для выдаленага атрымання звестак аб паказальніках на структуры ядра праз адпраўку адмыслова аформленых запытаў канфігурацыі. У функцыі l2cap_parse_conf_req выкарыстоўвалася структура l2cap_conf_efs, для якой не выконвалася папярэдняя ініцыялізацыя выдзеленай памяці і праз маніпуляцыі са сцягам FLAG_EFS_ENABLE можна было дамагчыся ўключэнні ў пакет старых дадзеных са стэка. Праблема выяўляецца толькі ў сістэмах, у якіх ядро ​​сабрана з опцыяй CONFIG_BT_HS (па змаўчанні адключаная, але актываваная ў некаторых дыстрыбутывах, напрыклад, у Ubuntu). Для паспяховага нападу таксама патрабуецца выстаўленне параметра HCI_HS_ENABLED праз кіравальны інтэрфейс у значэнне true (па змаўчанні не выкарыстоўваецца).

Крыніца: opennet.ru

Дадаць каментар