Vulnerabilità in glibc che consente l'accesso root al sistema

L'azienda Qualys ha identificato una vulnerabilità critica (CVE-2023-6246) nella libreria standard C Glibc, che consente, attraverso la manipolazione dell'esecuzione di applicazioni SUID, di eseguire codice con privilegi elevati. I ricercatori sono riusciti a sviluppare un exploit funzionante che permette di ottenere i diritti di root tramite la manipolazione degli argomenti della riga di comando durante l'esecuzione dell'utilità su.

La vulnerabilità è causata da un overflow del buffer nella funzione __vsyslog_internal(), utilizzata quando si chiamano le funzioni syslog() e vsyslog(). Il problema si verifica a causa di un errore nel tentativo di stampare un nome dell'applicazione troppo lungo attraverso il macro SYSLOG_HEADER. Quando si tenta di espandere il buffer tenendo conto di un nome lungo, si verifica un crash, dopo il quale i dati vengono scritti nel vecchio buffer di dimensioni originali più piccole.

Nell'organizzazione di un attacco tramite l'utilità su, l'attaccante può modificare il nome del processo durante l'esecuzione dell'applicazione sostituendo il valore di argv[0], che viene utilizzato per ottenere informazioni sul nome del programma durante la registrazione, e ottenere una sovrascrittura controllata dei dati oltre il buffer allocato. Successivamente, l'overflow può essere utilizzato per sovrascrivere la struttura nss_module nella libreria nss per creare una libreria condivisa e caricarla con diritti di root.

Il problema si manifesta a partire dalla versione glibc 2.37, pubblicata nell'agosto 2022 e contenente una modifica che gestisce i tentativi di scrivere messaggi troppo grandi. La correzione che introduce la vulnerabilità è stata retroportata nel ramo glibc 2.36 e nei pacchetti delle distribuzioni con versioni più vecchie di glibc, poiché la correzione menzionata risolveva la vulnerabilità CVE-2022-39046, che portava a perdite di dati nella heap. Così, la correzione di una vulnerabilità non pericolosa ha portato all'emergere di un problema critico. È interessante notare che una vulnerabilità simile nella funzione vsyslog() della libreria libc 5.4.3 è stata segnalata già nel 1997.

La vulnerabilità è stata confermata in Debian 12/13, Ubuntu 23.04/23.10 e Fedora 37-39. È stata dimostrata l'efficacia dell'exploit per ottenere i diritti di root da un utente non privilegiato in un ambiente Fedora 38 completamente aggiornato, con tutte le protezioni predefinite attivate. La vulnerabilità può essere sfruttata solo localmente, poiché richiede la trasmissione di oltre 1024 byte tramite il parametro argv[0] o l'argomento ident nella funzione openlog().

La correzione della vulnerabilità è stata inclusa nel codice di Glibc alcune ore fa e verrà inclusa nell'aggiornamento di Glibc 2.39 di domani, insieme alla risoluzione di altre due vulnerabilità (CVE-2023-6779, CVE-2023-6780) che colpiscono anche il codice __vsyslog_internal() e causano un overflow del buffer. Inoltre, la società Qualys ha avvisato del rilevamento di un overflow del buffer nell'implementazione della funzione qsort(), che non è stata considerata una vulnerabilità dagli sviluppatori di Glibc, poiché lo sfruttamento implica l'uso di una funzione di confronto non standard come argomento nella chiamata a qsort, che restituisce la differenza tra i parametri confrontati.

Lo stato della correzione delle vulnerabilità nelle distribuzioni può essere valutato sulle seguenti pagine: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. È possibile testare la vulnerabilità del sistema con il seguente comando: $ (exec -a "`printf '28000x' 1`" /usr/bin/su < /dev/null)
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