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

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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster