Eine Sicherheitslücke in der SquirrelMail-Applikation hat zur Folge, dass ein entfernter, angemeldeter Angreifer Befehle auf dem Server ausführen kann. Der Programmierfehler befindet sich in der »initStream()«-Funktion in der »Deliver_SendMail.class.php«-Datei. Diese filtert die Argumente für einen »popen()«-Aufruf nicht ordentlich. Dies ist kritisch, weil die »popen()«-Funktion einen Prozess startet, um Befehle auszuführen. Dadurch ist ein entfernter Angreifer dann in der Lage eine Sendmail-Konfiguration auf das System zu laden und dann Befehle auszuführen.
Eigentlich macht die Applikation alles richtig und ruft zum Filtern der Benutzeingaben die »escapeshellcmd()«-Funktion auf, die genau solche Problem vermeiden soll. Allerdings haben die Entwickler vergessen auch Whitespaces beim Anwenden der Funktion zu unterbinden. Der fehlerhafte Code sieht wie folgt aus:
$this->sendmail_command = "$sendmail_path $this->sendmail_args -f$envelopefrom"; $stream = popen(escapeshellcmd($this->sendmail_command), "w";
Der Angfreifer kann hier den Wert der »$envelopefrom«-Variable vorgeben und so die Attacke ausführen. Ein Patch und Exploit sind ebenfalls unter obiger URL zu finden.
Betroffen ist die Version 1.4.22 und eventuell auch noch ältere Versionen.
