9. Juli 2007

Die Versteigerung von Zero Days

Category: Allgemein — Christian @ 11:34

Zero Days sind ein knallhartes Geschäft. Erst knobelt man tage- oder wochenlang an einer Sicherheitslücke rum, dann wird man beim Verkauf übers Ohr gehauen und wenn man Pech hat, gibt es vom Hersteller ruck zuck einen Patch.

Deshalb gibt es jetzt eine Auktionsplattform zur Versteigerung der Lücken.

Ob das sinnvoll ist, wird sich zeigen. Das Problem einer solchen Plattform ist natürlich, der Käufer will die Katze ja nicht im Sack kaufen. Auf der anderen Seite besteht die Gefahr, wenn zu viele Informationen bekanntgegeben werden, findet schnell jemand anderes (oder der Hersteller) die Lücke und dann ist sie nicht mehr viel wert.

Kucken wir uns eine solche Beschreibung an:

    „There is a command execution vulnerability in Squirrelmail GPG Plugin. The vulnerability has been tested on the latest versions of Squirrelmail, 1.4.10a, and GPG Plugin, 2.0.“

Das klingt anscheinend relativ vage und unspezifisch, ist es aber nicht. Squirrelmail ist eine Open Source PHP-Anwendung und wer sich mit PHP ein wenig auskennt, findet oft schon mit „grep“ die ersten Sicherheitslücken. Durch die Eingrenzung auf das GPG-Plugin und die Beschreibung als „command execution“ muss im Grunde nur noch das Plugin nach einer Argumentvariablen durchsucht werden, die nicht sauber initialisiert oder gefiltert wird, bevor sie zur Ausführung an die Shell übergeben wird:

    592 function gpg_check_sign_pgp_mime($message,$fullbodytext) {
    [...]
    639 //$messageSignedText = escapeshellarg($messageSignedText);
    640 $messageSignedText = ereg_replace("\"", "\\\"",$messageSignedText );
    [...]
    661 $command = "echo -n \"$messageSignedText\" | [blablabla]

Wir sehen, das Problem liegt in der Variable $messageSignedText, die nicht sauber gefiltert wird. Der Fix wiederum ist ganz einfach, statt „escapesshellarg“ wird zur Bereinigung „ereg_replace“ verwendet, dann ist die Lücke behoben.

Ob diese Lücke (bzw. der PoC-Exploit) noch 600 USD wert ist, muss jeder für sich entscheiden.