In Linux è stata chiusa la vulnerabilità ssh-keysign-pwn, che consente agli utenti locali di leggere file di root

Una vulnerabilità nel kernel di Linux è stata corretta, comunemente nota come ssh-keysign-pwn. Il problema consente a un utente locale non privilegiato di leggere file che dovrebbero essere accessibili solo a root, inclusi le chiavi host SSH private e, in alcuni scenari, /etc/shadow. Al momento della pubblicazione, non era ancora stato assegnato un CVE separato per il problema.

Nonostante il nome, non si tratta di un errore in OpenSSH come server di rete sshd, ma di un difetto nella logica del kernel di Linux, relativo ai controlli ptrace e all'accesso ai descrittori di file di un altro processo tramite pidfd_getfd(2). L'utilità OpenSSH ssh-keysign si è rivelata uno dei esempi più comodi di sfruttamento, poiché lavora con le chiavi host private, che di solito appartengono a root e non sono accessibili agli utenti comuni.

Il cuore del problema nel fatto che la funzione __ptrace_may_access() gestiva in modo errato lo stato di un processo il cui spazio di memoria mm era già sparito, ma che aveva ancora dei descrittori di file aperti. Durante la chiusura del processo, il kernel chiama exit_mm() prima di chiudere i file tramite exit_files(). In questo breve intervallo, il processo appare già come privo di uno spazio di indirizzamento utente normale, ma i suoi file aperti esistono ancora. A causa di ciò, il controllo dello stato "dumpable" potrebbe essere aggirato, e pidfd_getfd() può accedere a un descrittore di file di un altro processo con UID corrispondente.

Uno scenario pratico si basa su programmi setuid che prima aprono un file sensibile con i diritti di root, poi annullano le proprie privilegi e terminano, mantenendo ancora un descrittore aperto. Nella descrizione pubblicata, come esempio viene citato ssh-keysign: esso apre /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key, dopo di che annulla i diritti e può chiudersi se EnableSSHKeysign è disabilitato. Queste chiavi devono essere accessibili solo a root, poiché vengono utilizzate per l'autenticazione basata su host.

Il secondo esempio è chage, che può aprire /etc/shadow, poi ripristinare i privilegi effettivi e terminare. Di conseguenza, l'attacco non fornisce necessariamente immediatamente una shell con privilegi root, ma consente di ottenere il contenuto di file che normalmente sono considerati altamente riservati. La fuga di /etc/shadow è pericolosa a causa della possibilità di successivo attacco offline per forzare le password, mentre la fuga delle chiavi host SSH private comporta il rischio di sostituzione dell'host o di attacchi a script SSH fidati.

La correzione è già stata accettata nel ramo principale di Linux. Il commit 31e62c2ebbfd con il titolo ptrace: slightly saner ‘get_dumpable()’ logic modifica il comportamento della verifica di dumpability: il kernel ora memorizza lo stato user_dumpable quando mm scompare e richiede una verifica corretta di CAP_SYS_PTRACE per bypassare. La patch riguarda include/linux/sched.h, kernel/exit.c e kernel/ptrace.c.

La vulnerabilità è stata segnalata da Qualys ed è stata corretta da Linus Torvalds il 14 maggio 2026. Phoronix sottolinea che al momento della pubblicazione il problema riguardava tutte le versioni del kernel Linux fino allo stato attuale dell'albero mainline prima dell'applicazione della correzione. L'autore del PoC ha anche indicato che i kernel precedenti al commit 31e62c2ebbfd, comprese le branche stabili al 14 maggio, sono vulnerabili.

È importante notare che per l'esecuzione non è necessario caricare moduli specifici del kernel, come in alcune recenti vulnerabilità LPE. È sufficiente avere accesso locale non privilegiato al sistema e la presenza di un processo helper privilegiato appropriato. Sviluppatore Debian Daniel Baumann ha sottolineato, che questo problema dovrebbe essere risolto con un aggiornamento del kernel e il successivo riavvio nel kernel corretto.

Nel repository pubblicato con la dimostrazione, è stata dichiarata una verifica su Raspberry Pi OS Bookworm con kernel 6.12.75, Debian 13, Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04, Arch e CentOS 9. Questo elenco dovrebbe essere considerato come dati forniti dall'autore del PoC, e non come un elenco esaustivo: poiché l'errore risiede nella logica generale del kernel, la copertura effettiva dipende dalla versione del kernel e dalla presenza di correzioni backport nel specifico distribuzione.

Per gli amministratori, la raccomandazione principale è semplice: installare il pacchetto del kernel aggiornato dal proprio sistema operativo e riavviare il sistema. Se ci sono ragioni per ritenere che ci sia stato un accesso locale non privilegiato da parte di un attaccante, dopo l'aggiornamento è consigliabile considerare anche la rotazione delle chiavi host SSH e la verifica delle registrazioni in /etc/shadow, poiché la vulnerabilità è collegata alla lettura di file sensibili, e non solo a un astratto bypass del controllo degli accessi.

In Debian è già iniziato il lavoro per implementare la correzione: Baumann ha annunciato il cherry-pick di un commit upstream nei trixie-fastforward-backports e l'invio di una merge request per Debian sid. Nella merge request è indicato esplicitamente che viene portato il commit 31e62c2 per correggere la logica di dumpability di ptrace, permettendo a un utente non privilegiato di leggere file di root.

Fonte: linux.org.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster