Nel kernel di Linux è stata individuata una vulnerabilità, simile a quelle di Copy Fail, Dirty Frag e Fragnesia, che consente a un utente non privilegiato di ottenere diritti di root sovrascrivendo i dati nella cache della pagina. Questa vulnerabilità è stata battezzata DirtyDecrypt (il problema è anche noto come DirtyCBC). È disponibile un prototipo di exploit.
Nella nota all'exploit non viene menzionato alcun identificatore CVE, si fa solo riferimento al fatto che i ricercatori hanno scoperto il problema il 9 maggio e hanno poi informato gli sviluppatori del kernel, i quali hanno risposto che la loro scoperta duplicava un altro rapporto su una vulnerabilità già corretta. Poiché la patch correttiva è già stata integrata nel kernel, i ricercatori hanno deciso di pubblicare l'exploit che avevano sviluppato. A giudicare dalla descrizione nell'exploit, esso utilizza la vulnerabilità CVE-2026-31635, la cui correzione è stata accettata nel kernel ad aprile ed è stata inclusa nella versione 7.0.0 e nel rilascio 6.18.23 datato 18 aprile. Il problema si manifesta a partire dal kernel 6.16.
Come per la serie di vulnerabilità Dirty Frag, anche la nuova vulnerabilità è presente nel driver RxRPC, che implementa la famiglia di socket AF_RXRPC e l'omonimo protocollo RPC, che opera sopra UDP. Il problema è causato da un errore nel controllo della dimensione dei dati nella funzione rxgk_verify_response() — anziché controllare "if (auth_len > len)" nel codice, è stato scritto "if (auth_len < len)", il che ha portato alla trasmissione alla funzione rxgk_decrypt_skb() di dati con una dimensione superiore a quella consentita. Durante l'esecuzione della funzione rxgk_decrypt_skb(), la decrittazione dei dati avveniva sostituendo direttamente nel cache di pagina per evitare una bufferizzazione eccessiva. A causa del controllo errato della dimensione, si presentava la possibilità di sovrascrivere dati nel cache di pagina all'offset selezionato.
L'exploitation de la vulnérabilité consiste à lire le fichier du programme avec le drapeau suid root (pour qu'il soit présent dans le cache de la page) et à remplacer dans le cache de la page une partie du code du programme par du code pour exécuter /usr/bin/sh. Le lancement ultérieur du programme entraînera le chargement en mémoire non pas du fichier exécutable original depuis le support, mais d'une copie modifiée depuis le cache de la page. Les programmes suid prévus dans l'exploit incluent « /usr/bin/su », « /bin/su », « /usr/bin/mount », « /usr/bin/passwd » et « /usr/bin/chsh ».
Pour exploiter la vulnérabilité, lors de la compilation du noyau, l'option CONFIG_RXGK doit être activée, et pour le chargement automatique, le module du noyau rxrpc.ko doit être disponible (dans certains systèmes, il n'est pas compilé). Le statut de la correction des vulnérabilités dans les distributions peut être évalué sur ces pages : Debian, Ubuntu, SUSE/openSUSE, RHEL, Arch, Fedora. Comme solution de contournement pour la protection, vous pouvez bloquer le chargement du module du noyau rxrpc :
sh -c «printf 'install rxrpc /bin/false\n' > /etc/modprobe.d/dirtydecrypt.conf; rmmod rxrpc 2>/dev/null; true»
Inoltre, è possibile notare la pubblicazione nell'elenco di distribuzione degli sviluppatori del kernel Linux di patch che disabilitano completamente le ottimizzazioni nel crypto API (AF_ALG), che utilizzano accessi diretti alla cache della pagina durante la decriptazione con algoritmi "skcipher" e "aead". Le ottimizzazioni escludono il buffering dei dati superfluo, ma creano rischi di vulnerabilità gravi. Si prevede che la loro disattivazione comporti solo una leggera diminuzione delle prestazioni a causa dell'aggiunta di un'operazione di copia in un buffer separato. Le patch sono state accettate dal mantenitore del sottosistema crypto API e sono state incluse nel ramo "cryptodev", dove vengono sviluppate le capacità per l'integrazione nei futuri rilascio del kernel Linux.
Fonte: opennet.ru
