InfraFenceInfraFence

Live Security Operations

Loslegen

CVE-2021-41773: Path Traversal in Apache 2.4.49, prüfen und beheben

Zuletzt aktualisiert:

Apache HTTP Server 2.4.49 hat geändert, wie er Pfade normalisiert, und durch die Änderung rutschte ein kodierter Punkt (%2e) durch. Eine Anfrage mit .%2e/-Segmenten im Pfad konnte so Dateien außerhalb der Ordner erreichen, die die Konfiguration freigibt. Ist auf einem solchen Ordner CGI aktiv, führt derselbe Trick Programme auf dem Server aus.

Betroffen ist nur Version 2.4.49. Der Fix dafür, 2.4.50, war selbst unvollständig (CVE-2021-42013), also ist die Version, die du betreiben solltest, 2.4.51 oder neuer.

Auf einen Blick

CVE
CVE-2021-41773
Software
Apache HTTP Server
Betroffene Versionen
Nur 2.4.49
Behoben in
2.4.50 (unvollständig, siehe CVE-2021-42013); aktualisiere auf 2.4.51 oder neuer
CVSS-Score
9.8 Kritisch (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
Ja, aufgenommen am 3. November 2021
Von der NVD veröffentlicht
5. Oktober 2021
Virtueller Patch von InfraFence
vp-cve-2021-41773 (ModSecurity id 9920001)

Was betroffen ist

Apache 2.4.49 war im September und Oktober 2021 etwa drei Wochen lang das aktuelle Release. Du findest es heute vor allem auf Servern, die aus dem Quellcode gebaut wurden, in Container-Images aus dieser Zeit oder auf Systemen, die seitdem nicht aktualisiert wurden. Die Offenlegung von Dateien funktioniert nur dort, wo Dateien außerhalb der freigegebenen Ordner nicht durch das standardmäßige Require all denied auf <Directory /> geschützt sind; Codeausführung braucht zusätzlich CGI (mod_cgi oder mod_cgid) auf einem Ordner mit Alias.

Prüfen, ob ein Server verwundbar ist

Prüfe zuerst die Version:

Debian / Ubuntu
apache2 -v
RHEL-Familie
httpd -v
Aus dem Quellcode gebaut (Standard-Präfix)
/usr/local/apache2/bin/httpd -v

Alles außer Apache/2.4.49 oder Apache/2.4.50 ist von dieser Lücke nicht betroffen. Prüfe bei diesen beiden Versionen die Konfiguration der Dateisystem-Wurzel, die den Zugriff verweigern muss, und ob ein CGI-Modul geladen ist:

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

Versuche hinterlassen kodierte Punkte in den Access-Logs:

Apache-Access-Logs
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

Beheben

Aktualisiere auf 2.4.51 oder neuer. Mit dem Paket deiner Distribution (das Update startet Apache neu, wähle also einen ruhigen Moment):

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

Ein aus dem Quellcode gebauter Server braucht einen neuen Build aus dem aktuellen 2.4-Release, ein Container ein neues Image. Stelle dann sicher, dass die Dateisystem-Wurzel den Zugriff verweigert, wie in der Standardkonfiguration, und lade neu:

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

Achtung: Wenn die Logs erfolgreiche Anfragen (Status 200) mit kodierten Punkten zeigen, behandle den Server als kompromittiert: Dateien wie /etc/passwd oder Konfiguration mit Passwörtern könnten gelesen worden sein, und mit CGI könnte ein Programm gelaufen sein.

Wie InfraFence sie blockiert, während du aktualisierst

Der virtuelle Patch für CVE-2021-41773 ist eine ModSecurity-Regel auf dem rohen Pfad der Anfrage, bevor Apache ihn dekodiert: Die Regel blockiert einen Pfad mit einem kodierten Punkt neben einem Punkt (.%2e, %2e., %2e%2e), gefolgt von einem Schrägstrich, im Klartext oder kodiert. Normale URLs enthalten diese Folge nie.

Wie der Patch angewendet wird

  1. Der Agent notiert, welche SSH-Ports und Websites antworten.
  2. Er schreibt die Regel (ModSecurity-ID 9920001) zwischen seine eigenen Markierungen in seiner ModSecurity-Datei, führt apachectl configtest aus und lädt Apache sanft neu. Schlägt der Test fehl, wird die vorherige Datei zurückgespielt.
  3. Er prüft, ob SSH und die Websites weiterhin antworten, und entfernt den Patch, wenn nicht.
  4. Er prüft mit einer harmlosen lokalen Testanfrage, ob ModSecurity mit der Regel wirklich blockiert. Ein ModSecurity im Modus DetectionOnly protokolliert nur: Der Patch wird dann entfernt und als unwirksam gemeldet, nie als angewendet.

Jede Anfrage, die der Patch blockiert, wird mit CVE-2021-41773 gemeldet (Agent 1.0.37 oder neuer): Du siehst die Versuche in der Aktivität des Servers und auf der Seite Ausnutzung im Dashboard und weißt so, dass die Schwachstelle gegen dich ausprobiert wird.

Achtung: Ein virtueller Patch blockiert die bekannte Form des Angriffs bei den Anfragen, die auf diesem Server über Apache laufen. Er ersetzt das Update nicht: Installiere die behobene Version und entferne den Patch dann unter Aktivität mit Rückgängig, wenn du ihn nicht mehr brauchst.

Virtuelle Patches brauchen Apache mit ModSecurity, die Einstellung Änderungen an der Webserver-Konfiguration erlauben und kein Hosting-Panel oder Konfigurationsmanagement-Tool, das den Webserver verwaltet; sie gehören zum Plan Pro und zu AutoMode. Ein Mensch wendet sie aus der KI-Analyse an, oder AutoMode tut es. Siehe Virtuelle Patches.

Quellen

Die Fakten auf dieser Seite stammen aus diesen Quellen; prüfe sie auf Änderungen.

Kostenlos auf 1 Server testen

Starter ist für einen Server kostenlos, mit vollem Schutz und automatischen Sperren. Ohne Kreditkarte.

Installiere den Agenten als root, mit deinem Token anstelle von <TOKEN>:

curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>

Das Token erstellst du im Dashboard unter Server › Server hinzufügen.