InfraFenceInfraFence

Live Security Operations

Inizia

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:

Debian / Ubuntu
apache2 -v
Famiglia RHEL
httpd -v
Compilato dai sorgenti (prefisso predefinito)
/usr/local/apache2/bin/httpd -v

Qualsiasi 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:

Qualsiasi distribuzione
sudo grep -rn -A3 '<Directory />' /etc/apache2/ /etc/httpd/ /usr/local/apache2/conf/ 2>/dev/null
Qualsiasi distribuzione
sudo apachectl -M 2>/dev/null | grep -i cgi

I tentativi lasciano punti codificati nei log di accesso:

Log di accesso di Apache
sudo grep -rhiE '\.%2e/|%2e\./|%2e%2e/|%%32%65|\.%%32' --include='*access*' --exclude='*.gz' /var/log/apache2 /var/log/httpd 2>/dev/null | tail -20

Correggere

Aggiorna a 2.4.51 o successiva. Con il pacchetto della tua distribuzione (l'aggiornamento riavvia Apache: scegli un momento tranquillo):

Debian / Ubuntu
sudo apt-get update
sudo apt-get install --only-upgrade apache2
apache2 -v
Famiglia RHEL
sudo dnf upgrade httpd
httpd -v

Un 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:

httpd.conf / apache2.conf
<Directory />
    AllowOverride None
    Require all denied
</Directory>
Qualsiasi distribuzione
sudo apachectl configtest && sudo apachectl graceful

Attenzione: 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

  1. L'agente annota quali porte SSH e quali siti rispondono.
  2. Scrive la regola (id ModSecurity 9920001) tra i propri marcatori nel suo file ModSecurity, esegue apachectl configtest e ricarica Apache in modo graceful. Se il test fallisce, rimette il file precedente.
  3. Controlla che SSH e i siti rispondano ancora e, se non è così, rimuove la patch.
  4. Controlla che ModSecurity blocchi davvero con la regola, con una richiesta di prova locale innocua. Un ModSecurity in DetectionOnly si 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.