Sunday, May 5. 2013
Am Freitag, dem dritten Mai, wurde ein Warnhinweis (Advisory) auf eine weit verbreitete Fehlkonfiguration in der Kombination von Exim mit Dovecot publiziert: ein offenbar seit 23.10.2009 im Dovecot-Wiki veröffentliches Konfigurationsbeispiel für Exim, mit dem eingehende E-Mails durch den zu Dovecot gehörenden LDA deliver ausgeliefert werden sollen, enthielt auch die Option “use_shell”, die dazu führt, dass der Aufruf insgesamt zur Ausführung an die Shell weitergegeben wird. Das is potentiell unsicher, wie auch die Exim-Dokumentation erläutert:
Not running the command under a shell (by default) lessens the security risks
in cases when a command from a user’s filter file is built out of data that was
taken from an incoming message. If a shell is required, it can of course be
explicitly specified as the command to be run. However, there are circumstances
where existing commands (for example, in .forward files) expect to be run
under a shell and cannot easily be modified. To allow for these cases, there is
an option called use_shell, which changes the way the pipe transport
works. Instead of breaking up the command line as just described, it expands it
as a single string and passes the result to /bin/sh. The
restrict_to_path option and the $pipe_addresses facility cannot be used
with use_shell, and the whole mechanism is inherently less secure.
Wenn es jemandem gelingt, ausführbaren Code in diesen Aufruf einzuschleusen, kann er fremden Code mit den Rechten von Exim ausführen, die im Moment der Auslieferung von Mail mit dem LDA deliver bestenfalls Zugriff auf alle Mailboxen ermöglichen und bei leichtsinniger Konfiguration - die im Dovecot-Wiki als eine Konfigurationsmöglichkeit ausdrücklich genannt wird! - schlimmstenfalls sogar root sind. Und dieses Einschleusen ist ausgesprochen einfach, enthält der Aufruf von deliver doch u.a. den Absender der E-Mail, den sog. Envelope-From (oder auch Return-Path), bspw. so:
command = /usr/local/libexec/dovecot/dovecot-lda -d $local_part@$domain -f $sender_address
$sender_address ist hier der problematische Parameter, denn diesen Parameter kann der Absender der E-Mail frei setzen. Durch die Option use_shell wird der obige Aufruf nach Ersatz der Variablen ohne jede Modifikation komplett an die Shell übergeben und ggf. entsprechender Code ausgeführt.
Am 02.05.2013 wurde das Beispiel im Wiki für Dovecot 1.x und auch in der Dokumentation für Dovecot 2.x berichtigt, am 03.05.2013 wurde das Advisoy veröffentlicht.
Continue reading "Vom Advisory zum Exploit binnen eines Tages"
Sunday, July 24. 2011
Nach einem guten Jahr habe ich mal wieder Zeit zu einer kleinen Änderung in checkmail gefunden, die ich dann sogleich als Version 0.5 released habe.
checkmail überprüft die ihm übergebenen E-Mail-Adressen nun zunächst auf syntaktische Richtigkeit (wobei allerdings auf der Domain-Seite keine in eckigen Klammern stehenden IP-Adressen akzeptiert werden), bevor er weitere Tests damit durchführt.
Die Dokumentation wurde entsprechend aktualisiert.
Die aktuelle Version steht jeweils auf meiner Downloadseite
zur Verfügung.
Monday, October 18. 2010
RBLs (Realtime Blackhole Lists) sind mittlerweile über ein Jahrzehnt alt und eine weitverbreitete Methode der Filterung unerwünschter E-Mails. In diese Listen, die über das DNS propagiert werden, trägt der jeweilige Betreiber nach seinen Kriterien die IP-Adressen von Hosts ein, die gefiltert werden sollen. Manche dieser Listen sind sinnvoll, andere sind es nicht; manche zählen Spam-Quellen auf, offene Proxies und Relays, von Malware befallene Systeme, andere jedes System, dessen Betreibers Nase dem RBl-Provider nicht passt. Wer RBLs einsetzt, muß sich also informieren, welche Policy eine RBL verfolgt, und wie zuverlässig sie das tut.
Neben den RBLs gibt es auch Anbieter, die prüfen, ob bestimmte Systeme auf diesen RBLs landen; das sollte jeder Admin größerer Mailsysteme eigentlich selbst tun, um ggf. (das für die Listung ursächliche Problem zu beheben und dann) die Löschung von der jeweiligen RBL zu veranlassen, aber für diejenigen, die das nicht tun können oder möchten, sind solche Angebote sicher interessant. Nur sollten diese Anbieter von RBL-Checks auch wissen, was sie da eigentlich tun, was wohl nicht immer sichergestellt ist ...
Ich bekam jedenfalls dieser Tage (mal wieder) einen Hinweis, eines meiner Systeme sei in der RBL hostkarma.junkemailfilter.com gelandet; wie der Name andeutet, versucht deren Betreiber Mailserver in gute, schlechte oder neutrale einzuteilen. Wie zuvor habe ich daraufhin mein System auf den Webseiten des RBL-Betreibers geprüft und bekam - wie immer - als Antwort, das System sei nicht gelistet. Diesmal bin ich der Sache nachgegangen und habe festgestellt, daß der RBL-Check-Anbieter grundsätzlich Recht hat: meine Maschine war tatsächlich in der RBL eingetragen! Aber warum bestreitet das der RBL-Provider dann? Nun, meinem System war dort der Wert “127.0.0.1” zugewiesen. Und der RBL-Provider meint zu diesem Wert folgendes:
127.0.0.1 - whilelist - trusted nonspam
Danke, keine weiteren Fragen mehr.
Thursday, September 30. 2010
Aufgrund einer bei mir eingegangenen Anfrage habe ich mich heute mal mit dem korrekten Format eines Date:-Headers in einer E-Mail befasst.
Ein Leser meiner Homepage schilderte mir das Problem, das automatisch generierte E-Mails aus seiner Webanwendung bei ihm im Posteingang von GMX (Webinterface) immer mit dem Datum “01.01.1970” angezeigt würden, in seinem Mailclient (Outlook) aber korrekt. Das Datum (die “Epoche”) roch natürlich nach fehlendem oder nicht standardkonformen Date:-Header ... Nach Überlassung eines Beispiels konnte ich sehen, daß die Anwendung den Header nach dem Muster Wed, 29 Sep 10 22:45:24 generiert. Meine erste Vermutung, daß das Jahr vierstellig angegeben werden müsse, erwies sich als falsch ... aber die zweite, nämlich daßdie Angabe der Zeitzone fehlt, als goldrichtig.
Der letzte STD 10, RFC 822, sieht die Angabe einer Zeitzone nämlich ebenso wie seine Nachfolger, RFC 2822 und der momentan auf dem Standard Track befindliche RFC 5322 (der künftige Standard) als zwingend vor; eine Datumsangabe ohne diese ist somit nicht nur uneindeutig, sondern auch syntaktisch fehlerhaft. Test-E-Mails an GMX bestätigten dann auch, daß im Posteingang der Weboberfläche (nur) die Mails mit fehlender Zeitzone fälschlisch auf den 1.1.1970 datiert wurden. Interessanterweise wurde das Datum aber in der Einzelansicht der E-Mails - genau wie auch in meinem Mailclient - korrekt (in der - hier ja auch zutreffenden - lokalen Zeitzone) angezeigt.
Die Anwendung sollte dementsprechend nachgebessert werden, um undefinierte Ergebnisse zu vermeiden.
Saturday, June 19. 2010
Nach dem gestrigen Release der praktisch komplett neu geschriebenen Version 0.3 von checkmail kann ich heute die Version 0.4
von checkmail ankündigen, die die eigentlich geplanten Änderungen enthält.
checkmail erkennt temporäre Fehler - bspw. auch beim Greylisting - jetzt als solche, statt diese E-Mail-Adressen als nicht zustellbar zu definieren; außerdem werden in jedem Fall die Antworten des Mailservers standardmäßig ausgegeben.
Überdies kann checkmail jetzt selbst eine tatsächlich zufällige - und damit mit hoher Sicherheit nicht zustellbare - E-Mail-Adresse erzeugen, wenn geprüft werden soll, ob der betreffende Mailserver überhaupt schon im SMTP-Dialog die Zustellbarkeit überprüft (ansonsten sind positive Antworten keine Garantie für die Existenz der geprüften Adresse). Die übrigen Konfigurationsangaben (der zu verwendende Absender und die Angaben für HELO/EHLO) können nun nicht nur im Script definiert, sondern auch auf der Kommandozeile übergeben werden.
Die Dokumentation wurde entsprechend aktualisiert.
Die aktuelle Version steht jeweils auf meiner Downloadseite
zur Verfügung.
Friday, June 18. 2010
Nach rund 5 Jahren Pause habe ich nunmehr eine neue Version 0.3 von checkmail released, einem Kommandozeilen-Tool zur Überprüfung der Zustellbarkeit von E-Mail-Adressen.
Im Prinzip wurde das Script komplett neu geschrieben, modularisiert, neu strukturiert und in den Kommentaren vereinheitlicht. Außerdem habe ich die Ausgaben neu gefaßt und ausführlicher gemacht; MXe werden jetzt zuverlässig in der nach dem DNS vorgegebenen Reihenfolge ausprobiert, Multi-Line-Antworten ordnungsgemäß protokolliert und der Exit-Status bei der Batch-Verarbeitung von Adressen sinnvoll gesetzt (womit zugleich eine Veränderung der Bedeutung des Exit-Status verbunden war).
Außerdem wurde die Dokumentation im POD-Format in das Script integriert und ins Englische übersetzt und ein Changelog hinzugefügt.
Die aktuelle Version steht jeweils auf meiner Downloadseite
zur Verfügung.
Tuesday, April 6. 2010
Meine Mailserver erwarten, daß derjenige, der eine E-Mail einliefern möchte, sich ordnungsgemäß “vorstellt” (also ein einigermaßen korrektes HELO bzw. EHLO überträgt, namentlich nicht den - respektive einen der - Namen meiner eigenen Maschinen und auch keine bloße IP-Adresse). Normalerweise fängt dieser vergleichsweise “weiche” Filter nicht viel Spam weg (und “härter” filtern, bspw. überprüfen, ob die Vorwärts-Rückwarts-Auflösung stimmt o.ä., möchte ich darauf nicht).
In den letzten Tagen hat sich allerdings namentlich eine Maschine aus Venezuela geradezu rührend bemüht, trotzdem E-Mail loszuwerden:
root@host:~# zgrep -c wonderl.com /var/log/exim/mainlog.*
/var/log/exim/mainlog.01:32569
/var/log/exim/mainlog.02.gz:133069
/var/log/exim/mainlog.03.gz:164318
/var/log/exim/mainlog.04.gz:161655
/var/log/exim/mainlog.05.gz:142325
Das sind gestern rund 32.500 Versuche, und die vier Tage zuvor, mithin über Ostern, jeweils deutlich über 100.000. Ich würde ja gerne wissen, ob das immer dieselbe E-Mail sein sollte (nachdem die Versuche in der Regel maximal im Sekundenabstand liegen, liegt das allerdings eher fern), oder ob mir da massiv Spam erspart geblieben ist ... Jedenfalls eine durchaus bemerkenswerte Penetranz, die dort an den Tag gelegt wurde.
Monday, January 11. 2010
... andere sind es weniger.
Ich hatte bereits im vergangenen Jahr berichtet, wie wenig zuverlässig E-Mail als Medium mittlerweile oft ist, dann aber positiv überrascht zur Kenntnis nehmen dürfen, wie vergleichsweise schnell auch ein großer Anbieter wie Ebay auf entsprechende Hinweise reagiert und die (gar nicht im Ernst erwarteten) notwendigen Änderungen an seinen Mailsystemen vornimmt. Nunmehr kann ich berichten, daß andere Anbieter zwar dasselbe Problem haben, aber die Reaktion leider nicht immer gleich kompetent ist. Vodafone versendet E-Mails nämlich gleichfalls mit nicht existenten Absendern; mein entsprechender Hinweis wurde schnell, aber leider nur so beantwortet:
Guten Tag Herr Hochstein,
Ihr Hinweis hilft uns, Fehler zu erkennen und uns zu verbessern. Vielen Dank dafür. Leider können wir in diesem Fall keinen weiteren Support
leisten. Eine Änderung des Absenders bei automatischen
Bestätigungen ist nicht angedacht.
Sicherlich werden Ihre User keine Problemne haben, wenn sie Ihnen Mails über ihr Vodafone-MobileMail Postfach versenden.
Den ersten Absatz verstehe ich, auch wenn er mir inhaltlich nicht gefällt, aber, ganz ehrlich: was der zweite Absatz mir sagen will, ist mir schleierhaft. *kopfkratz* Am Problem der mit ungültigem Absender versandten automatisierten Bestätigungen geht diese Antwort doch völlig vorbei.
Wednesday, December 16. 2009
Es geschehen noch Zeichen und Wunder! Auf meine Anfang November an den Support gestellte Frage bzw. den Hinweis auf Probleme beim Mailversand durch Ebay bzw. der Zustellung solcher E-Mails kam - nach einem Zwischenbescheid - nunmehr eine Antwort in der Sache:
Sehr geehrter Herr Hochstein,
Sie hatten sich an eBay gewandt, da Ihre Nutzer nicht alle E-Mail von uns erhalten haben.
Durch Sie und andere E-Mail-Provider sind wir auf eine Änderung in der Kopfzeile unserer Benachrichtigungen hingewiesen worden. Dies könnte der Auslöser für das geschilderte Problem gewesen sein. Um diese Fehlerquelle auszuschliessen, haben diese Änderung jetzt korrigiert.
Herr Hochstein, bitte informieren Sie uns, ob Ihre Nutzer ab dem 16.12.2009 noch Benachrichtigungen vermissen.
Ich danke Ihnen für Ihre Mühe und wünsche Ihnen eine angenehme Woche.
Und die Überprüfung hat tatsächlich eine Behebung des Problems ergeben: die im Envelope-From bzw. Return-Path (dem “technischen” Absender der E-Mail) verwendeten Adressen existieren jetzt wieder bzw. nehmen E-Mail entgegen.
Erfreulich, daß man sich bei Ebay solcher Probleme tatsächlich annimmt und sie behebt. Das motiviert dazu, auch in anderen Fällen entsprechend tätig zu werden. 
Sunday, December 13. 2009
Nachdem ich im letzten Monat meine Verwaltung personalisierter E-Mail-Adressen auf eine bequeme Weboberfläche umgestellt hatte, habe ich dieses Konzept nun auch auf meine abonnierten Mailinglisten erweitert.
Bislang habe ich alle Mailinglisten mit derselben E-Mail-Adresse abonniert, die ich dann per UUCP abgerufen habe. Das hatte den protokollbedingten Vorteil, daß die E-Mails komprimiert wurden, aber den Nachteil, daß ich keine Kontrolle über die Konfiguration des MX hatte, also auch keine Spamfilterung implementieren konnte, und daß bei einem Wechsel des Providers auch diese E-Mail-Adresse verlorengeht, dann also plötzlich alle bezogenen Mailinglisten unter anderer Adresse neu abonniert werden müssen. Und schließlich kamen über diese Adresse geradezu ungeheure Mengen an Spam an, geschuldet den Webarchiven der meisten Mailinglisten. Also habe ich mich nun entschieden, auch für den Bezug von Mailinglisten jeweils individualisierte Mailadressen unter einer (anderen) Subdomain einzusetzen; das erleichtert es überdies, bei Problemen mit der Abbestellung einer Liste einfach die entsprechende Bezugsadresse stillzulegen.
Das Hauptproblem bei einer solchen Umstellung ist es, die bisherige Bezugsadresse aus jeder einzelnen Liste aus- und die neue Bezugsadresse dann wiederum in jede Liste neu einzutragen (von der Reihenfolge her natürlich andersherum, damit keine Mailverluste auftreten). Und man glaubt gar nicht, wie schnell man dabei Low-Traffic-Listen (Ankündigungen o.ä.) vergißt ...
Schon seit langer Zeit (tatsächlich wiederum Jahren) habe ich daher Scripts laufen, die versuchen, aus den über die Zustellung an meine Mailnglistenadresse geschriebenen Logs möglichst alle betroffenen Mailinglisten zu isolieren. Und ausgerüstet mit diesen Listen, einer Liste der Mailinglisten, an deren Bezug ich mich bewußt erinnere und einer Liste meiner Mail2News-Gateways habe ich nunmehr die Herkules-Aufgabe begonnen, alle Mailinglisten umzustellen (und manche dabei direkt abzubestellen). Ich bin gespannt, welche Listen ich vergessen werde ...
Dazu waren ergänzende Umstellungen “drumherum” erforderlich: bspw. bei der lokalen Auslieferung der Mailinglistenmails, die Filter und Mail2News-Gateways berücksichtigen muß, oder auch bei der Konfiguration der richtigen Absenderadresse für jede Mailingliste in Mailclient oder Newsreader, damit eventuelle Antworten auf die Listen dann auch auf diesen landen und nicht abgewiesen werden, weil sie von einer Adresse kommen, die dem Mailinglistensystem unbekannt ist. Und das Logging wollte angepaßt werden, und ... und ... und ...
Ich bin gespannt, wie sich diese Umstellung bewähren wird.
|
Kommentare