V jadre Linux bola objavená zraniteľnosť, podobná zraniteľnostiam Copy Fail, Dirty Frag a Fragnesia, ktorá umožňuje neprivilegovanému používateľovi získať práva root prepísaním údajov vo stránkovom cache. Zraniteľnosti bolo pridelené kódové meno DirtyDecrypt (problém je tiež spomínaný pod menom DirtyCBC). Je dostupný prototyp exploit.
CVE identifikátor nie je v poznámke k exploit-u spomínaný, uvádza sa len to, že výskumníci objavili problém 9. mája, po čom informovali vývojárov jadra, ktorí odpovedali, že ich nález duplicitne nahlasuje už opravenú zraniteľnosť. Keďže záplata bola už zahrnutá v jadre, výskumníci sa rozhodli zverejniť ich vyvinutý exploit. Súdruh podľa popisu vo vnútri exploit-u používa zraniteľnosť CVE-2026-31635, úprava pre ktorú bola prijatá do jadra v apríli a je súčasťou vetvy 7.0.0 a zostavenia z 18. apríla vo vydaní 6.18.23. Problém sa objavuje od jadra 6.16.
Rovnako ako v prípade série zraniteľností Dirty Frag, nová zraniteľnosť je prítomná v ovládači RxRPC, ktorý realizuje rodinu soketov AF_RXRPC a rovnomenný RPC protokol, pracujúci nad UDP. Problém je spôsobený chybou pri overovaní veľkosti údajov v funkcii rxgk_verify_response() — namiesto kontroly 'if (auth_len > len)' bolo v kóde uvedené 'if (auth_len < len)', čo viedlo k odoslaniu údajov s veľkosťou presahujúcou povolené do funkcie rxgk_decrypt_skb(). Pri vykonávaní funkcie rxgk_decrypt_skb() sa dešifrovanie údajov uskutočňovalo s priamou substitúciou zmien do stránkového cache, aby sa predišlo zbytočnej vyrovnávacej pamäti. V dôsledku nesprávnej kontroly veľkosti vznikla možnosť prepísať údaje v stránkovom cache na vybranom posune.
Exploatácia zraniteľnosti spočíva v čítaní súboru programu s nastavovacím praporom suid root (pre jeho umiestnenie do stránkového cache) a nahradení časti kódu programu v stránkovom cache kódom pre spustenie /usr/bin/sh. Následné spustenie programu povedie k tomu, že do pamäte bude načítaná nie pôvodná spustiteľná verzia z disku, ale upravená kópia zo stránkového cache. V rámci exploit-u existuje možnosť používať programy s praporom suid ako '/usr/bin/su', '/bin/su', '/usr/bin/mount', '/usr/bin/passwd' a '/usr/bin/chsh'.
Na využitie zraniteľnosti pri zostavení jadra musí byť aktívna možnosť CONFIG_RXGK a pre automatické načítanie je k dispozícii modul jadra rxrpc.ko (v niektorých systémoch sa nevytvára). Stav odstránenia zraniteľností v distribúciách môžete posúdiť na týchto stránkach: Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. Ako obchádzajúce opatrenie na ochranu môžete zablokovať načítanie modulu jadra rxrpc:
sh -c "printf 'install rxrpc /bin/false\n' > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true"
Dodatočne je možné spomenúť publikáciu v zozname mailing listu vývojárov jadra Linux, ktorá obsahuje záplaty, ktoré úplne vypínajú v crypto API (AF_ALG) optimalizácie využívajúce priame adresovanie do stránkového cache pri dešifrovaní pomocou algoritmov 'skcipher' a 'aead'. Optimalizácie vylučujú nadbytočné vyrovnávanie dát, ale vytvárajú riziká vážnych zraniteľností. Predpokladá sa, že ich vypnutie povedie len k miernemu zníženiu výkonu kvôli vzniku dodatočnej operácie kopírovania do samostatného vyrovnávacieho pamäťového priestoru. Záplaty boli prijaté správcom subsystému crypto API a zahrnuté do vetvy 'cryptodev', v ktorej sa vyvíjajú možnosti pre prechod do hlavného súboru budúcich vydaní jadra Linux.
Zdroj: opennet.ru
