Juergen P. Meier
2014-09-26 05:06:41 UTC
Da ist (oder war) ein Bug, der auf
<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271> wie folgt
| GNU Bash through 4.3 processes trailing strings after function
| definitions in the values of environment variables, which allows remote
| attackers to execute arbitrary code via a crafted environment, as
| demonstrated by vectors involving the ForceCommand feature in OpenSSH
| sshd, the mod_cgi and mod_cgid modules in the Apache HTTP Server,
| scripts executed by unspecified DHCP clients, and other situations in
| which setting the environment occurs across a privilege boundary from
| Bash execution.
So könnten also Webserver, die CGI-Skripte ausführen, angreifbar sein.
*JEDER* Webserver, der CGI-*Shells*cripte (direkt oder indirekt aus<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2014-6271> wie folgt
| GNU Bash through 4.3 processes trailing strings after function
| definitions in the values of environment variables, which allows remote
| attackers to execute arbitrary code via a crafted environment, as
| demonstrated by vectors involving the ForceCommand feature in OpenSSH
| sshd, the mod_cgi and mod_cgid modules in the Apache HTTP Server,
| scripts executed by unspecified DHCP clients, and other situations in
| which setting the environment occurs across a privilege boundary from
| Bash execution.
So könnten also Webserver, die CGI-Skripte ausführen, angreifbar sein.
anderen Scriptesprachen oder CGI-Programmen heraus die kein
vollstaendiges ENV-Scrubbing betreibend) ausfuehrt ist angreifbar.
Es gibt auch schon Botnetze die ungezielt nach solchen scannen, es ist
alos eine Frage der Zeit (nicht viel!) bis jeder Server erwischt wird.
Zum Testen, ob man verwundbar ist, kann man
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
ausführen.
Das prueft, ob die Shell verwundbar ist, ja. Dann muss man nochenv x='() { :;}; echo vulnerable' bash -c "echo this is a test"
ausführen.
schauen, ob es einem nicht-autorisierten Fremden moeglich ist,
irgendwie eine bash starten zu lassen, deren Environment er vorgeben
kann.
Webserver mit CGI sind ein Haupteinfallstor dafuer (weil sie eben
ausdruecklich alle moeglichen HTTP-Headerinfos die vom Angreifer
vorgegeben werden ungefiltert in das ENV der CGI-Programme schreiben,
wenn die dann irgendwo eine bash starten (AUCH INDIREKT per system()
syscall!), hat man verloren.
SSH erlaubt per Default ebenfalls einem Remote-User das ENV
vorzugeben:
LC_EXPLOIT='() { :;}; touch vulnerable' ssh ***@remote -c "echo hi"
Das kann man ganz einfach abschalten, in dem man die Zeile
AcceptEnv=LANG LC_*
aus sshd_config auskommentiert und den sshd service reloaded.
Relevant ist das eh nur fuer shell-boxen wo die erlaubten Kommandos
eingeschraenkt sind (z.B. sftp-only accounts), weil das Kommando
mit den Rechten des USers ausgefuehrt wird.
Sudo filtert schon lange ENV-Variablen mit () im value. Ich muesste
mal nachschauen, was die Sudo-leute damals dazu veranlasst hat, evtl.
ist dieser Fehler garnicht so lange unentdeckt geblieben.
Fuer Code-Analysen ist der "system()" syscall zu flaggen (und alle die
system() aufrufen), insbesondere wenn davor kein ENV-Scrubbing
stattfindet (z.B. u.A. alle ENV variablen loeschen die ( und ) enthalten).
Ebenso natuerlich wie jede Form von exec*("*sh",*).
Bei vielen GNU verseuchten Unixoiden ist die bash schilesslich auch /bin/sh.
Was mich allerdings wundert ist, dass es "Ewigkeiten" dauerte, bis es auf
Debian Testing (müsste gerade Jessie sein) hier eben der Fix kam, während
Vorallem weil die Debian-maintainer zu aller erst informiert wurden.Debian Testing (müsste gerade Jessie sein) hier eben der Fix kam, während
Vor allen andern.
Bekannte auf SuSE, Redhat/Fedora und gar Debian Wheezy schon vor Stunden
berichteten, dass der Fix kam.
X'post de.comp.os.unix.shell, de.comp.os.unix.linux.misc,
de.comm.software.webserver
F'up de.comp.os.unix.linux.misc
Ignored, das ist kein Linux-spezifisches Thema.berichteten, dass der Fix kam.
X'post de.comp.os.unix.shell, de.comp.os.unix.linux.misc,
de.comm.software.webserver
F'up de.comp.os.unix.linux.misc
Nach dcsm umgebogen, wo dieses Thema am meisten OnTopic ist.
Juergen
--
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)