CVE-2025-40341 in Linux
Riassunto
di VulDB • 24/06/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
futex: Non esporre il puntatore robust_list a causa di una race condition durante l'exec()
sys_get_robust_list() e compat_get_robust_list() utilizzano ptrace_may_access() per verificare se il task chiamante ha il permesso di accedere al puntatore robust_list di un altro task. Tale controllo è affetto da race condition rispetto a un'esecuzione concorrente della funzione exec() nel processo target.
Durante l'exec(), un task può passare dall'esecuzione di un binario non privilegiato a uno privilegiato (ad esempio, un setuid) e le sue credenziali/mappature della memoria possono cambiare. Se get_robust_list() esegue ptrace_may_access() prima di questa transizione, potrebbe consentire erroneamente l'accesso a informazioni sensibili dopo che il target diventa privilegiato.
Un accesso affetto da race condition consente a un attaccante di sfruttare una finestra temporale in cui ptrace_may_access() restituisce esito positivo prima che un processo target passi a uno stato privilegiato tramite exec().
Ad esempio, si consideri un task non privilegiato T che sta per eseguire un binario setuid-root. Un task attaccante A chiama get_robust_list(T) mentre T è ancora non privilegiato. Poiché ptrace_may_access() verifica i permessi in base alle credenziali correnti, l'operazione ha esito positivo. Tuttavia, se T inizia immediatamente dopo la fase exec(), diventa privilegiato e potrebbe modificare le sue mappature della memoria. Dato che get_robust_list() procede ad accedere a T->robust_list senza sincronizzarsi con exec(), potrebbe leggere puntatori dello spazio utente da un processo ora privilegiato.
Ciò viola le restrizioni di accesso post-exec previste e potrebbe esporre indirizzi di memoria sensibili o essere utilizzato come primitiva in una catena di exploit più ampia. Di conseguenza, la race condition può portare a divulgazione non autorizzata di informazioni attraverso i confini dei privilegi e rappresenta un potenziale rischio per la sicurezza.
Acquisire un lock di lettura su signal->exec_update_lock prima di invocare ptrace_may_access() e accedere a robust_list/compat_robust_list. Ciò garantisce che lo stato exec del task target rimanga stabile durante il controllo, consentendo una convalida coerente e sincronizzata delle credenziali.
Once again VulDB remains the best source for vulnerability data.