CVE-2021-41773: path traversal in Apache 2.4.49, verifica e correzione
Ultimo aggiornamento:
Apache HTTP Server 2.4.49 ha cambiato il modo in cui normalizza i percorsi, e la modifica lasciava passare un punto codificato (%2e). Una richiesta con segmenti .%2e/ nel percorso poteva così raggiungere file fuori dalle cartelle mappate dalla configurazione. Con CGI attivo su una di quelle cartelle, lo stesso trucco esegue programmi sul server.
È colpita solo la versione 2.4.49. La sua correzione, 2.4.50, era a sua volta incompleta (CVE-2021-42013), quindi la versione da usare è 2.4.51 o successiva.
In sintesi
- CVE
- CVE-2021-41773
- Software
- Apache HTTP Server
- Versioni colpite
- Solo 2.4.49
- Corretta in
- 2.4.50 (incompleta, vedi CVE-2021-42013); aggiorna a 2.4.51 o successiva
- Punteggio CVSS
- 9.8 Critica (NVD, CVSS 3.1) ·
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CISA Known Exploited Vulnerabilities
- Sì, aggiunta il 3 novembre 2021
- Pubblicata da NVD
- 5 ottobre 2021
- Patch virtuale InfraFence
vp-cve-2021-41773(ModSecurity id 9920001)
Cosa è colpito
Apache 2.4.49 è stata la release corrente per circa tre settimane, tra settembre e ottobre 2021. Oggi la trovi soprattutto su server compilati dai sorgenti, in immagini container di quel periodo o su sistemi non aggiornati da allora. La divulgazione di file funziona solo dove i file fuori dalle cartelle mappate non sono protetti dal Require all denied predefinito su <Directory />; l'esecuzione di codice richiede anche CGI (mod_cgi o mod_cgid) su una cartella con alias.
Verificare se un server è vulnerabile
Prima controlla la versione:
apache2 -vhttpd -v/usr/local/apache2/bin/httpd -vQualsiasi versione diversa da Apache/2.4.49 o Apache/2.4.50 non è colpita da questa falla. Su queste due versioni controlla la configurazione della radice del file system, che deve negare l'accesso, e se è caricato un modulo CGI:
sudo grep -rn -A3 '<Directory />' /etc/apache2/ /etc/httpd/ /usr/local/apache2/conf/ 2>/dev/nullsudo apachectl -M 2>/dev/null | grep -i cgiI tentativi lasciano punti codificati nei log di accesso:
sudo grep -rhiE '\.%2e/|%2e\./|%2e%2e/|%%32%65|\.%%32' --include='*access*' --exclude='*.gz' /var/log/apache2 /var/log/httpd 2>/dev/null | tail -20Correggere
Aggiorna a 2.4.51 o successiva. Con il pacchetto della tua distribuzione (l'aggiornamento riavvia Apache: scegli un momento tranquillo):
sudo apt-get update
sudo apt-get install --only-upgrade apache2
apache2 -vsudo dnf upgrade httpd
httpd -vUn server compilato dai sorgenti va ricompilato dalla release 2.4 corrente; un container ha bisogno di una nuova immagine. Poi assicurati che la radice del file system neghi l'accesso, come nella configurazione predefinita, e ricarica:
<Directory />
AllowOverride None
Require all denied
</Directory>sudo apachectl configtest && sudo apachectl gracefulAttenzione: Se i log mostrano richieste riuscite (stato 200) con punti codificati, considera il server compromesso: file come /etc/passwd o configurazioni con password potrebbero essere stati letti e, con CGI, un programma potrebbe essere stato eseguito.
Come InfraFence la blocca mentre aggiorni
La patch virtuale per CVE-2021-41773 è una regola ModSecurity sul percorso grezzo della richiesta, prima che Apache lo decodifichi: blocca un percorso con un punto codificato accanto a un punto (.%2e, %2e., %2e%2e) seguito da una barra, normale o codificata. Gli URL normali non contengono mai questa sequenza.
Come viene applicata la patch
- L'agente annota quali porte SSH e quali siti rispondono.
- Scrive la regola (id ModSecurity 9920001) tra i propri marcatori nel suo file ModSecurity, esegue
apachectl configteste ricarica Apache in modo graceful. Se il test fallisce, rimette il file precedente. - Controlla che SSH e i siti rispondano ancora e, se non è così, rimuove la patch.
- Controlla che ModSecurity blocchi davvero con la regola, con una richiesta di prova locale innocua. Un ModSecurity in
DetectionOnlysi limita a registrare: la patch viene allora rimossa e segnalata come inefficace, mai come applicata.
Ogni richiesta bloccata dalla patch viene segnalata con CVE-2021-41773 (agente 1.0.37 o successivo): vedi i tentativi nell'attività del server e nella pagina Sfruttamento della dashboard, quindi sai che qualcuno sta provando la vulnerabilità contro di te.
Attenzione: Una patch virtuale blocca la forma nota dell'attacco nelle richieste che passano da Apache su quel server. Non sostituisce l'aggiornamento: installa la versione corretta, poi rimuovi la patch da Attività con Annulla se non ti serve più.
Le patch virtuali richiedono Apache con ModSecurity, l'impostazione Consenti modifiche alla configurazione del web server e nessun pannello di hosting o strumento di configuration management che gestisca il web server; fanno parte del piano Pro e di AutoMode. Le applica una persona a partire dall'analisi AI, oppure AutoMode. Vedi Patch virtuali.
Fonti
I dati di questa pagina vengono da queste fonti; controllale per eventuali aggiornamenti.
Provalo gratis su 1 server
Starter è gratuito per un server, con protezione completa e blocco automatico. Senza carta di credito.
Installa l'agent come root, con il tuo token al posto di <TOKEN>:
curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>Il token si crea nella dashboard, in Server › Aggiungi server.
