Vulnerabilità nel sottosistema eBPF del kernel Linux

Nel sottosistema eBPF, che consente di eseguire gestori per il tracciamento, l'analisi dell'operato dei sottosistemi e la gestione del traffico, eseguiti all'interno del kernel Linux in una speciale macchina virtuale con JIT, è stata identificata una vulnerabilità (CVE-2021-29154) che consente a un utente locale di far eseguire il proprio codice a livello di kernel. Il problema si manifesta fino alla versione 5.11.12 (inclusa) e non è ancora stato corretto nelle distribuzioni (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). La correzione è disponibile sotto forma di patch.

Secondo quanto dichiarato dai ricercatori che hanno individuato la vulnerabilità, sono riusciti a sviluppare un prototipo funzionante di exploit per sistemi x86 a 32 e 64 bit, che può essere utilizzato da un utente non privilegiato. Tuttavia, la Red Hat sottolinea che il pericolo del problema dipende dalla disponibilità per l'utente della chiamata di sistema eBPF. Ad esempio, in RHEL e nella maggior parte delle altre distribuzioni Linux, nella configurazione predefinita, la vulnerabilità può essere sfruttata se il BPF JIT è abilitato e se l'utente ha i diritti CAP_SYS_ADMIN. Come misura di protezione alternativa, si raccomanda di disabilitare il BPF JIT utilizzando il comando: echo 0 > /proc/sys/net/core/bpf_jit_enable

Il problema è causato da un errore nel calcolo dell'offset per le istruzioni di salto durante la generazione del codice macchina da parte del compilatore JIT. In particolare, durante la generazione delle istruzioni di salto non si tiene conto che l'offset potrebbe cambiare dopo la fase di ottimizzazione. Questa mancanza può essere utilizzata per generare codice macchina anomalo ed eseguirlo a livello di kernel.

È interessante notare che questa non è l'unica vulnerabilità nel sottosistema eBPF negli ultimi tempi. Alla fine di marzo, sono state identificate altre due vulnerabilità (CVE-2020-27170, CVE-2020-27171) nel kernel, che consentono l'utilizzo di eBPF per aggirare le protezioni contro vulnerabilità di tipo Spectre, permettendo di determinare il contenuto della memoria del kernel creando condizioni per l'esecuzione speculativa di determinate operazioni. Per un attacco Spectre è necessaria la presenza in codice privilegiato di una specifica sequenza di istruzioni che porta all'esecuzione speculativa delle istruzioni. Nell'eBPF sono stati trovati diversi modi per generare tali istruzioni attraverso manipolazioni dei programmi BPF forniti per l'esecuzione.

La vulnerabilità CVE-2020-27170 è causata dalla presenza di manipolazioni dei puntatori nel verificatore BPF, che provocano operazioni speculative che accedono a aree al di fuori dei limiti del buffer. La vulnerabilità CVE-2020-27171 è collegata a un errore di aritmetica intera (integer underflow) durante l'uso dei puntatori, che porta a un accesso speculativo ai dati al di fuori del buffer. I suddetti problemi sono già stati risolti nelle versioni del kernel 5.11.8, 5.10.25, 5.4.107, 4.19.182 e 4.14.227, e sono stati inclusi negli aggiornamenti del kernel della maggior parte delle distribuzioni Linux. I ricercatori hanno preparato un prototipo di exploit che consente a un utente non privilegiato di estrarre dati dalla memoria del kernel.

Fonte: opennet.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