V jedru Linux je bila odkrita ranljivost, podobna ranljivostim Copy Fail, Dirty Frag in Fragnesia, ki omogoča neprivilegiranemu uporabniku pridobitev pravic root z nadpisovanjem podatkov v straniščnem predpomnilniku. Ranljivosti je dodeljeno kodno ime DirtyDecrypt (težava se prav tako omenja pod imenom DirtyCBC). Na voljo je prototip izkoriščanja.
CVE-identifikator v opombi k izkoriščanju ni omenjeno, navedeno je le, da so raziskovalci težavo odkrili 9. maja, nakar so obvestili razvijalce jedra, ki so odgovorili, da njihovo odkritje podvoji drugo poročilo o že odpravljeni ranljivosti. Ker je bil popravek že vključen v jedro, so se raziskovalci odločili objaviti razvito izkoriščanje. Sodeč po opisu znotraj izkoriščanja, se pri njem uporablja ranljivost CVE-2026-31635, za katero je bilo popravilo sprejeto v jedro aprila in vključeno v različico 7.0.0 ter oblikovano 18. aprila s sprostitvijo 6.18.23. Težava se kaže od jedra 6.16 naprej.
Kot v primeru serije ranljivosti Dirty Frag, nova ranljivost obstaja v gonilniku RxRPC, ki implementira družino soketov AF_RXRPC in istoimenski RPC-protokol, ki deluje preko UDP. Težavo povzroča napaka pri preverjanju velikosti podatkov v funkciji rxgk_verify_response() — namesto preverjanja "if (auth_len > len)" je bilo v kodi zapisano "if (auth_len < len)", kar je privedlo do prenosa podatkov v funkcijo rxgk_decrypt_skb() z velikostjo, večjo od dovoljene. Med izvajanjem funkcije rxgk_decrypt_skb() je bila dešifriranje podatkov izvedena z vstavitvijo sprememb neposredno v straniščni predpomnilnik, da se prepreči odvečna zakasnitev. Zaradi napačnega preverjanja velikosti se je pojavila možnost nadpisovanja podatkov v straniščnem predpomnilniku na izbrani offset.
Izkoriščanje ranljivosti se zmanjša na branje datoteke programa z zastavico suid root (za njeno namestitev v straniščni predpomnilnik) in zamenjavo dela kode programa v straniščnem predpomnilniku s kodo za zagon /usr/bin/sh. Naslednji zagon programa bo privedel do tega, da bo v pomnilnik naložen neoriginalni izvršljiv datoteka iz shranjevanja, ampak spremenjena kopija iz straniščnega predpomnilnika. Kot suid-programi so v izkoriščanju predvideni možnosti uporabe "/usr/bin/su", "/bin/su", "/usr/bin/mount", "/usr/bin/passwd" in "/usr/bin/chsh".
Za izkoriščanje ranljivosti mora biti pri sestavljanju jedra aktivna možnost CONFIG_RXGK, modul jedra rxrpc.ko pa mora biti na voljo za samodejno nalaganje (v nekaterih sistemih se ne sestavlja). Status odprave ranljivosti v distribucijah lahko ocenite na naslednjih straneh: Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. Kot obvodno zaščito lahko blokirate nalaganje modula jedra rxrpc:
sh -c «printf 'install rxrpc /bin/false\n' > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true»
Dodatno lahko omenimo objavo na mailing listi razvijalcev jedra Linux o popravkih, ki popolnoma onemogočajo optimizacije v crypto API (AF_ALG), ki uporabljajo neposredno dostopanje do straniške predpomnilnika pri dekriptiranju z algoritmi 'skcipher' in 'aead'. Optimizacije izključujejo odvečno predpomnjenje podatkov, vendar ustvarjajo tveganje za resne ranljivosti. Predvideva se, da bo njihovo onemogočenje privedlo le do majhnega zmanjšanja zmogljivosti zaradi pojavitve dodatne operacije kopiranja v ločen predpomnilnik. Popravki so bili sprejeti od vzdrževalca podskrivnosti crypto API in vključeni v vejo 'cryptodev', v kateri se razvijajo možnosti za prenose v glavni sklop prihodnjih izdaj jedra Linux.
Izvor: opennet.ru
