Schwere Sicherheitslücke in Sendmail

Sendmail, der wohl am meisten genutzte Mail Transfer Agent, weist eine gravierende Sicherheitslücke auf. Über einen speziell erzeugten E-Mail-Header kann ein externer Angreifer einen Buffer Overflow provozieren und den Mailserver übernehmen.

Die Sicherheitslücke tritt sowohl bei der Open-Source- als auch bei der kommerziellen Variante von sendmail auf und betrifft die Versionen von 5.79 bis 8.12.7. Gemäß diversen Untersuchungen nutzen zwischen 50 und 75 Prozent aller Domains sendmail als MTA. Damit bedroht das Sicherheitsloch nicht nur eine hohe Anzahl von Systemen, sondern direkt eines der wichtigsten Kommunikationsmittel im Internet.

Da die Kompromittierung über eine entsprechend präparierte, aber sonst "legale" E-Mail erfolgt, lässt sich Angriffen durch Filterung nicht abhelfen. Laut den Entdeckern des Sicherheitslochs, der ISS X-Force, schützt auch ein non-executable Stack nicht vor entsprechenden Exploits. Zudem hinterlassen selbst erfolgreiche Angriffe keinerlei Anzeichen in den Logdateien.

Sendmail.org empfiehlt dringend ein sofortiges Update auf sendmail 8.12.8 oder das Einspielen von Patches für ältere sendmail-Versionen. Für die kommerziell vertriebene Variante des MTA stellt der Hersteller Sendmail Inc. entsprechende Bugfixes bereit. Auch die Hersteller von diversen Betriebssystemen offerieren bereits Updates, so zum Beispiel für IBM AIX, FreeBSD, SGI Irix und Red Hat Linux.

Überprüfen Sie bei einem Download unbedingt die PGP-Signatur der heruntergeladenen Dateien. Bislang nicht identifizierte Cracker hatten im vergangenen Herbst schon einmal mit einem Trojaner verseuchte sendmail-Tarballs in Umlauf gebracht und könnten auch jetzt die Gelegenheit nutzen, über modifizierte Software Backdoors auf Mailservern zu platzieren.

Die jetzt entdeckte, von CERT-CC als Remote Buffer Overflow in Sendmail klassifizierte Sicherheitslücke kommt zum Tragen, wenn ein sendmail-Server die bei einer SMTP-Transaktion anfallenden Header-Daten verarbeitet. Dabei versucht er zu überprüfen, ob Angaben in Feldern wie "From:", "To:" oder "CC:" semantisch korrekt sind. Die entsprechende Funktion, checkaddr(), findet sich in der Datei headers.c des Quell-Codes.

Checkaddr() nutzt einen statischen Puffer, der durch verschiedene Sicherheitsprüfungen ein korrektes Parsen der einlaufenden Daten sicherstellen soll. Eine dieser Prüfungen ist jedoch fehlerbehaftet. Das ermöglicht einem externen Angreifer, durch eine speziell gestaltete Adressangabe einen Buffer Overflow zu provozieren. So kann er root-Rechte auf dem attackierten System erlangen. (jlu)