
Ricerca e prova di concetto per la vulnerabilità di heap overflow del kernel Linux CVE-2022-0185.
Ricerca e proof-of-concept per la vulnerabilità di heap overflow del kernel Linux CVE-2022-0185.
CVE-2022-0185 – Analisi dell'heap overflow del kernel Linux Panoramica
CVE-2022-0185 è una vulnerabilità di heap buffer overflow nell'implementazione del contesto del filesystem del kernel Linux. Il problema esiste nella funzione legacy_parse_param() e può consentire l'escalation dei privilegi locali in determinate configurazioni.
CVE ID: CVE-2022-0185
Componente: contesto del filesystem del kernel Linux
Tipo di vulnerabilità: Heap buffer overflow
Vettore di attacco: Locale
Impatto: Escalation dei privilegi
Autore: Sandesh Pantha Tipo di progetto: Ricerca sulla sicurezza e dimostrazione educativa
Riferimenti ufficiali:
NVD entry: https://nvd.nist.gov/vuln/detail/CVE-2022-0185
Openwall advisory: https://www.openwall.com/lists/oss-security/2022/01/18/7
Linux kernel fix commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=722d94847de29310e8aa03fcbdb41fc92c521756
Causa principale della vulnerabilità
La vulnerabilità è causata da un controllo dei limiti improprio durante l'analisi dei parametri del filesystem tramite la system call fsconfig().
In legacy_parse_param():
I dati controllati dall'utente vengono aggiunti a un buffer interno
Il calcolo delle dimensioni non previene correttamente l'overflow
Chiamate ripetute possono causare la corruzione della memoria heap
Ciò risulta in una scrittura fuori dai limiti in oggetti heap adiacenti, che può potenzialmente portare a:
Corruzione della memoria del kernel
Divulgazione di informazioni
Condizioni di use-after-free
Escalation dei privilegi
Le versioni interessate includono i kernel Linux precedenti a:
5.11.0
5.16.2
5.15.16
5.10.93
Focus della ricerca
Questo progetto dimostra:
Creazione del contesto del filesystem tramite fsopen()
Iniezione di parametri tramite fsconfig()
Tecniche di heap spraying del kernel
Heap grooming basato su code di messaggi
Spraying del buffer del socket
Pattern controllati di riutilizzo degli oggetti
L'obiettivo di questo repository è educativo: comprendere il comportamento dell'heap del kernel e la metodologia di sfruttamento delle vulnerabilità in un ambiente di laboratorio controllato.
Ambiente di laboratorio
I test dovrebbero essere eseguiti solo in una macchina virtuale isolata.
Configurazione consigliata:
Ubuntu 20.04 o Debian con un kernel vulnerabile
QEMU o VirtualBox
Snapshot abilitato prima del test
Ambiente non di produzione
Non eseguire mai questo su sistemi di produzione.
Mitigazione
La vulnerabilità è stata corretta modificando la logica di convalida dei limiti in legacy_parse_param().
Passi di mitigazione:
Aggiornare a una versione del kernel con patch
Disabilitare i namespace utente non privilegiati dove possibile
Monitorare attività anomale del contesto del filesystem
Versioni del kernel contenenti la correzione:
5.16.2
5.15.16
5.10.93
Riferimento alla patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
Cosa dimostra questo progetto
Comprensione approfondita degli interni del kernel Linux
Consapevolezza del layout della memoria heap
Manipolazione del ciclo di vita degli oggetti del kernel
Metodologia di ricerca sulle vulnerabilità sicura
Pratiche di divulgazione responsabile
Uso etico
Questo progetto è fornito solo per scopi educativi e di ricerca difensiva sulla sicurezza.
Non tentare di utilizzare questa conoscenza su sistemi senza autorizzazione esplicita.