I Linux-kernen er der opdaget en sårbarhed, der minder om sårbarhederne Copy Fail, Dirty Frag og Fragnesia, som gør det muligt for en ikke-privilegeret bruger at opnå root-rettigheder ved at overskrive data i sidecachen. Sårbarheden er givet kodebetegnelsen DirtyDecrypt (det samme problem omtales også som DirtyCBC). En prototype af et exploit er tilgængelig.
CVE-identifikatoren nævnes ikke i bemærkningerne til exploit-en; det er kun angivet, at forskerne opdagede problemet den 9. maj, hvorefter de informerede udviklerne af kernen, som svarede, at deres opdagelse duplikerede en anden rapport om en allerede rettet sårbarhed. Da patchen med rettelsen allerede var inkluderet i kernen, besluttede forskerne at offentliggøre det exploit, de havde udviklet. Ifølge beskrivelsen inden i exploit-en anvendes CVE-2026-31635, hvor rettelsen blev accepteret i kernen i april og blev en del af udgaven 7.0.0, som blev udgivet den 18. april i version 6.18.23. Problemet optræder fra og med kernen 6.16.
Som med serien af sårbarheder Dirty Frag er den nye sårbarhed til stede i RxRPC-driveren, som implementerer familien af sockets AF_RXRPC og den tilsvarende RPC-protokol, der kører ovenpå UDP. Problemet skyldes en fejl i data størrelseskontrol i funktionen rxgk_verify_response() — i stedet for at kontrollere «if (auth_len > len)» angav koden «if (auth_len < len)», hvilket førte til, at data med en størrelse større end tilladt blev sendt til funktionen rxgk_decrypt_skb(). Når funktionen rxgk_decrypt_skb() blev udført, blev dataene dechifreret ved at indsætte ændringer direkte i sidecachen for at undgå unødig buffering. På grund af den fejlagtige størrelseskontrol opstod der mulighed for at overskrive data i sidecachen ved det valgte offset.
Udnyttelse af sårbarheden involverer at læse programfilen med suid root-flaget (for at få den til at bosætte sig i sidecachen) og erstatte en del af programmets kode i sidecachen med kode for at køre /usr/bin/sh. En efterfølgende kørsel af programmet vil føre til, at en ændret kopi fra sidecachen bliver indlæst i hukommelsen i stedet for den originale eksekverbare fil fra lageren. I exploit-en er der mulighed for at bruge suid-programmer som «/usr/bin/su», «/bin/su», «/usr/bin/mount», «/usr/bin/passwd» og «/usr/bin/chsh».
For the vulnerability to be exploited, the CONFIG_RXGK option must be enabled when compiling the kernel, and the rxrpc kernel module must be available for autoloading. (In some systems, it is not compiled). The status of vulnerability fixes in distributions can be assessed on the following pages: Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. As a workaround, you can block the loading of the rxrpc kernel module:
sh -c "printf 'install rxrpc /bin/false\n' > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true"
Additionally, it is worth noting the publication in the mailing list of Linux kernel developers of patches that completely disable optimizations in the crypto API (AF_ALG) that use direct access to the page cache when decrypting using the 'skcipher' and 'aead' algorithms. The optimizations eliminate unnecessary data buffering but create risks of serious vulnerabilities. It is assumed that disabling them will only lead to a slight decrease in performance due to the additional copy operation into a separate buffer. The patches have been accepted by the maintainer of the crypto API subsystem and included in the 'cryptodev' branch, where capabilities are being developed for inclusion in future releases of the Linux kernel.
Kilde: opennet.ru
