Разкрита е техниката за експлоатация на уязвимостта в tty подсистемата на ядрото на Linux

Изследователите от екипа на Google Project Zero публикуваха метод за експлоатация на уязвимостта (CVE-2020-29661) в реализацията на ioctl обработчика TIOCSPGRP от tty подсистемата на ядрото на Linux, както и подробно разгледаха механизмите за защита, които биха могли да блокират подобни уязвимости.

Проблемната грешка беше отстранена в ядрото на Linux още на 3 декември миналата година. Проблемът се проявява в ядра до версия 5.9.13, но повечето дистрибуции вече отстраниха проблема в актуализациите на пакетите с ядрото, предложени още миналата година (Debian, RHEL, SUSE, Ubuntu, Fedora, Arch). Подобна уязвимост (CVE-2020-29660) също беше открита в реализацията на ioctl извикването TIOCGSID, но тя също вече е широко отстранена.

Проблемът е причинен от грешка при установяване на блокировките, водеща до състояние на надпревара в кода drivers/tty/tty_jobctrl.c, която може да се използва за създаване на условия за достъп до памет след освобождаването й (use-after-free), експлоатирани от потребителското пространство чрез манипулации с ioctl извикването TIOCSPGRP. Работещ експлоит е демонстриран за повишаване на привилегиите в Debian 10 с ядро 4.19.0-13-amd64.

В публикуваната статия акцентът не е толкова върху техниката на създаване на работещ експлоит, колкото върху инструментите в ядрото, които съществуват за защита от подобни уязвимости. Изводът не е утешителен, методи като сегментиране на паметта в купа и контрол на достъпа до памет след освобождаването й не се прилагат на практика, тъй като водят до намаляване на производителността, а защитата на база CFI (Control Flow Integrity), която блокира експлоите в по-късните етапи на атаката, изисква доработка.

Когато се разглежда какво би могло да промени ситуацията в дългосрочен план, се изтъква приложението на напреднали статични анализатори или използването на езици, които осигуряват безопасна работа с паметта, като Rust и диалектите на езика C с разширени анотации (напр. Checked C), на етапа на компилация, проверяващи състоянието на блокировките, обектите и указателите. Сред методите за защита се споменава активирането на режима panic_on_oops, превръщането на структурите на ядрото в режим само за четене и ограничаването на достъпа до системните извиквания чрез механизми като seccomp.

Източник: opennet.ru

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