wie kürzlich bekannt wurde, gibt es ein großes Loch im Apache Server aller couleur. Es betrifft alle Apache 1.3 Versionen, und alle Apache 2.0 Releases!
[Update: es gibt sogar eine offizielle Stellungnahme von Apache]
Mittels eines einfachen, nur wenige Zeilen langen Perl-Skriptes ist es möglich einen Webserver zum Systemabsturz zu bekommen. Erst läuft der RAM voll, kurz darauf steht die Kiste komplett, nur noch ein Reset reanimiert das System.
Der Schaden, den ein Einzelner damit anrichten kann, ist riesig, entsprechend dringend ist die Behebung am eigenen Webserver!
Abhilfe
Da es bis dato noch kein Update von Apache gibt, hier nur die offizielle Tipps: http://article.gmane.org/gmane.comp.apache.announce/58
Problemlos ist die Variante mit mod_rewrite, da das Modul meist schon aktiv ist.
ISPConfig
Wer, wie wir, Webserver mit ISPConfig verwaltet, steht vor einem kleinen Problem, das eigentlich nur mit Fleißarbeit zu lösen ist. Die Änderungen in der Config müssen für jeden vhost in der Apache Config separat angelegt werden. ISPConfig schreibt diese aber selbst, sodaß bei der kleinsten Änderung in ISPConfig die Anpassungen in den Config-Dateien überschrieben werden.
Abhilfe schafft hier nur ein spezieller Patch in der jeweiligen .htaccess-Datei jeder Website. Bei einigen zig- oder gar hunderten von Sites ist das kaum zu schaffen.
Wir haben ein kleines Bash-Skript gebastelt geschrieben, welches hier zum Download steht, und in das Verzeichnis /var/www zu kopieren ist.
ggf. die Variablen in den ersten Zeilen anpassen:
sudo vi /var/www/patchscript.sh
anschließend das ganze ausführbar machen:
sudo chmod +x /var/www/patchscript.sh
und ausführen:
sudo ./patchscript.sh
Fertig!
hier das komplette Skript in der Version 1:
#!/bin/sh #vars patch=' <IfModule mod_header.c> # Apache zero-day Exploit removal script v1 # (c) 2011 Samuel Orsenne - diegelernten.de # Drop the Range header when more than 5 ranges. # CVE-2011-3192 SetEnvIf Range (,.*?){5,} bad-range=1 RequestHeader unset Range env=bad-range# end of patch <IfModule> ' #this is the name of the subdirs where the vhosts are located # in a ispconfig3-config, it would be web subdir=web # please don't change anything below this line ############################################## clear echo --------------------------------------------- echo \# Apache zero-day Exploit removal script v1 \# echo \# \(c\) 2011 Samuel Orsenne - diegelernten.de \# echo --------------------------------------------- echo echo "current directory: "${PWD} echo "will look for .htaccess files in subdirs called '$subdir'" echo while true; do read -p "start patching all subfolders? " yn case $yn in [Yy]* ) weiter=1; break;; [Nn]* ) echo ; echo exiting...; echo ; exit;; * ) echo "please answer yes or no";; esac done echo echo Scanning for .htaccess in subdirs for file in `find .|grep -i \/$subdir'$'`; do #echo $file datei=htaccess datei=$file/.$datei if [ -f $datei ]; then echo "[FOUND] file $datei exists, adding patch below." else echo "[NOT FOUND] creating $datei from template" fi echo "$patch" >> $datei done echo done.
