Уязвимости в ядрото на 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. За да извърши атака, нападателят трябва да е в обхвата на Bluetooth—не е необходимо предварително сдвояване, но Bluetooth трябва да е активен на компютъра. За атака е достатъчно да знаете MAC адреса на устройството на жертвата, който може да бъде определен чрез подслушване или, на някои устройства, изчислен въз основа на Wi-Fi MAC адреса.

Първата уязвимост (CVE-2022-42896) е причинена от достъп до вече освободена област от паметта (use-after-free) при изпълнението на функциите l2cap_connect и l2cap_le_connect_req - след създаване на канал чрез обратното извикване new_connection не е зададено заключване за него, но беше зададен таймер (__set_chan_timer), при изтичане на таймаута, извикване на функцията 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

Добавяне на нов коментар