DirtyDecrypt — нова уязвимост от класа Copy Fail, предоставяща права root в Linux

В ядрото на Linux е открита уязвимост, подобна на уязвимостите Copy Fail, Dirty Frag и Fragnesia, която позволява на непривилегирован потребител да получи права root, записвайки данни в страничния кеш. Уязвимостта е получила кодово име DirtyDecrypt (проблемата също се споменава под името DirtyCBC). Достъпен е прототип на експлоита.

CVE идентификаторът в бележката за експлоита не е споменат, посочено е само, че изследователите са открили проблема на 9 май, след което са уведомили разработчиците на ядрото, които отговорили, че тяхната находка дублира друг отчет за вече поправена уязвимост. Тъй като патчът с корекцията вече е включен в ядрото, изследователите са решили да публикуват разработения от тях експлоит. Съдя по описанието в експлоита, в него се използва уязвимостта CVE-2026-31635, поправка за която е приета в ядрото през април и е включена в версия 7.0.0, издадена на 18 април 6.18.23. Проблемът се проявява от ядрото 6.16.

Както в случая с поредицата от уязвимости Dirty Frag, новата уязвимост е налична в драйвера RxRPC, реализиращ семейство сокети AF_RXRPC и одноименния RPC протокол, работещ повърху UDP. Проблемът е причинен от грешка при проверката на размера на данните във функцията rxgk_verify_response() — вместо проверка „if (auth_len > len)“, в кода е указано „if (auth_len < len)“, което довело до предаване на функцията rxgk_decrypt_skb() на данни с размер, по-голям от допустимия. При изпълнението на функцията rxgk_decrypt_skb() декриптирането на данните се осъществявало с подмяна на промени директно в страничния кеш, за да се избегне ненужната буферизация. Заради неверната проверка на размера се е появила възможността за записване на данни в страничния кеш на избраното отместване.

Експлоатацията на уязвимостта се свежда до четене на файл на програмата с флага suid root (за да попада в страничния кеш) и замяна в страничния кеш на част от кода на програмата с код за стартиране /usr/bin/sh. Последващото стартиране на програмата ще доведе до това, че в паметта ще бъде зареден не оригиналният изпълним файл от носителя, а изменената копия от страничния кеш. Като suid програми в експлоита е предвидена възможността за използване на “/usr/bin/su”, “/bin/su”, “/usr/bin/mount”, “/usr/bin/passwd” и “/usr/bin/chsh”.

За да се експлоатира уязвимостта при изграждане на ядрото, опцията CONFIG_RXGK трябва да бъде активна, а за автоматично зареждане е необходим модулът на ядрото rxrpc.ko (в някои системи той не се изгражда). Статусът на отстраняване на уязвимостите в дистрибуциите може да се оцени на следните страници: Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. Като заобиколен вариант за защита, можете да блокирате зареждането на модула на ядрото rxrpc:

sh -c «printf 'install rxrpc /bin/false\n' > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true»

Допълнително, може да се отбележи, че в списъка на разработчиците на ядрото Linux са публикувани пачове, които напълно изключват в crypto API (AF_ALG) оптимизации, използващи директен достъп до страничния кеш при декриптиране с алгоритмите „skcipher“ и „aead“. Оптимизациите изключват излишната буферираност на данните, но създават рискове от сериозни уязвимости. Предполага се, че тяхното изключване ще доведе само до незначително понижаване на производителността поради появата на допълнителна операция по копиране в отделен буфер. Пачовете са приети от лицето, отговарящо за подсистемата crypto API и са включени в клона „cryptodev“, в който се развиват възможностите за интегриране в основния набор от бъдещите издания на ядрото Linux.

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

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