Redazione RHC : 7 Ottobre 2021 19:57
Autore: Mario Rossano
Data Pubblicazione: 7/10/2021
La NIS2 è complessa da capire?
Non perdere tempo, segui l'anteprima gratuita del corso che stiamo preparando.Accedi quindi alla nostra Academy e segui l'anteprima del corso della durata di 30 minuti per comprendere i contenuti esclusivi che tratteremo nel corso.per ulteriori informazioni, scrivici ad [email protected] oppure scrivici su Whatsapp al 379 163 8765
Supporta RHC attraverso:
Apache è uno dei webserver più diffusi al mondo. A marzo 2021 il numero di host in rete superava il miliardo e la percentuale di questi gestita con Apache è del 25%, quindi oltre 250 milioni di host nel mondo (fonte Netcraft).
Ne deriva che ogni problematica legata ad Apache ha un impatto numericamente notevole.
L’exploit è stato pubblicato in data 6 ottobre 2021 ed è particolarmente grave, in quanto la vulnerabilità consente non solo la lettura di files all’esterno della directory del virtual host (path trasversal attack) – come inizialmente ipotizzato – ma anche l’esecuzione arbitraria di processi sul server (RCE – remote code execution).
Occorre dire che la problematica non riguarda tutte le versioni di Apache, ma “solo” le versione 2.4.49 (che è stata rilasciata il 16 settembre 2021) e la più recente 2.4.50.
Verificando tramite Shodan risultano, nel momento in cui scrivo (7 ottobre 2021), oltre 110’000 host con questa versione di Apache, quindi oltre 110’000 siti potenzialmente vulnerabili nel mondo.
La vulnerabilità è dovuta ad un bug introdotto nella versione 2.4.49 e solo parzialmente risolto nella versione 2.4.50, relativo all’operazione di normalizzazione degli URI – Uniform Resource Identifier (v. anche URI normalization https://en.wikipedia.org/wiki/URI_normalization) ovvero alla trasformazione degli indirizzi secondo lo standard.
L’esecuzione arbitraria di codice può avvenire a condizione che su Apache 2.4.49/2.4.50 sia attivo mod_cgi ove non sia specificata la direttiva “Require all denied” per tutti i files esterni alla document root, impostazione che evita il path trasversal, letteralmente l’attraversamento del percorso, evitando che l’attaccante possa accedere a directory cui non dovrebbe poter avere accesso.
La modalità di attraversamento del path con l’obiettivo di leggere il file con gli utenti sul server, può ottenersi ad esempio da terminale tramite curl:
curl -v –path-as-is https://sitotarget/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
ma si potrebbe lanciare anche /bin/sh e relativi parametri di esecuzione…
Per verificare se il proprio host gira con Apache 2.4.49 o 2.4.50, anche in questo caso è possibile usare curl:
curl –head https://sitotarget
Per cui si riceverà una risposta del tipo seguente:
HTTP/1.1 200 OKDate: Thu, 07 Oct 2021 18:26:44 GMTServer: Apache/2.4.49 (Debian)X-Powered-By: PHP/5.6.6-1~dotdeb.1…
Come si vede l’host è potenzialmente a rischio ed è possibile tentare, tramite curl, l’esecuzione di codice invocando la shell.
In altri casi il webserver non dichiara il numero di versione (quando è specificato ServerSignature Off nel file di configurazione apache2.conf oppure httpd.conf). In questo caso si potrebbe contattare il fornitore del servizio per avere informazioni più dettagliate.
Il codice dell’exploit è reperibile sul NIST all’URL seguente
https://nvd.nist.gov/vuln/detail/CVE-2021-41773.
Le vulnerabilità sono pubblicate su CVE (Common Vulnerability and Exposures) agli indirizzi seguenti:
Cosa fare?
Innanzitutto occorre aggiornare la propria versione di Apache qualora quella in uso sia una delle due vulnerabili. Apache ha rilasciato in data 07 ottobre 2021 (data in cui scrivo) la versione 2.4.51 che risolve i problemi di attraversamento del percorso e di esecuzione arbitraria di codice rilevati nella versione 2.4.49 e solo parzialmente risolti dalla versione 2.4.50.
Qualora non fosse possibile aggiornare il software, occorrerà impostare la direttiva Require all denied per tutti i files esterni alla document root del webserver in apache2.conf o httpd.conf e quindi riavviare il daemon.
Ad esempio:
sudo nano /etc/apache2/apache2.conf……
e quindi dopo aver salvato il file, riavviare il servizio:
./apache2 restart