SMTP MTA STS (Strict Transport Security)
Es ist ja nicht so, dass es mit DANE, DMARC, STARTTLS, PGP, SMIME u.a. nicht schon genug SMTP-Abkürzungen geben würde. Aber Anfang 2016 haben ein paar große Provider (Microsoft, Google, Yahoo, Comcast, LinkedIn und 1&1) einen Vorschlag zur besseren Sicherung der Übertragung von Mails per SMTP beim IETF eingereicht. .
RFC 8461 wurde verabschiedet: SMTP MTA Strict Transport Security (MTA-STS)
https://tools.ietf.org/html/rfc8461
Das Problem
Die meisten Mailserver lauschen auf Port 25 um eingehende Mails anzunehmen. Der MX-Eintrag im DNS teilt der Welt mit, wo dieser Server zu suchen ist und der "Erstkontakt" findet immer erst einmal unverschlüsselt statt. Ein Absender, der im Prinzip Verschlüsselung per TLS unterstützt, erfragt dies durch eine "EHLO"-Anfrage und wertet die Antwort aus. Sie könne das einfach mit einem TELNET ausprobieren.
Da ich leider kein fließend TLS per Telnet spreche, komme ich hier erst mal nicht weiter aber ab dem Moment ist alles verschlüsselt. Aber es gibt hier gleich mehrere Probleme:
- DNS-Spoofing und Verifikation des "Richtigen Server"
Ein Angreifer könnte die DNS-Antworten an meinen Absende-Server verändern, so dass ich gar nicht an das richtige Ziel sondern mit einen anderen Server spreche und dort meine Mails ablegen. Der Server könnte sogar STARTTLS anbieten, muss es aber nicht. Auf jeden Fall hätte der Server meine unverschlüsselte Mail und kann sie mitlesen und an den richtigen Server weiterleiten. Wenn ich meine Domäne nicht per SPF, SenderID gesichert hätte, würde der Empfänger diese Mail auch von dem unautorisierten Relay annehmen und niemand würde etwas merken. Wer schaut schon die Header-Zeilen an und prüft den vorherigen Hop?
Die DNS-Fälschungen kann man nur z.B. mit DNSSEC verhindern aber das ist eine andere langwierige Story. - Unterdrücken von STARTTLS
Ein System, welches auf der Verbindung eingreifen kann, kann die Antwort auf die EHLO-Anfrage so ändern, dass der Absender gar nicht mit bekommt, dass die Gegenseite STARTTLS unterstützt. Er wird die Mail dann auch unterschlüsselt senden - Opportunistisches TLS und falsches Zertifikat
Die meisten Mailserver nutzen schon STARTTLS aber versäumen es dabei das Zertifikat zu verifizieren. Sehr viele Server haben gar kein "öffentliches" Zertifikat und selbst wenn, muss es nicht mit dem Namen des Mailservers übereinstimmen. Hier ist viel Unsicherheit zu finden aber Mailserver nutzen dennoch STARTTLS. Besser eine Mail ist auf dem Teilstück vielleicht unsicher verschlüsselt als gar nicht verschlüsselt. Aber sicher ist das nicht
Es sind noch weitere fortschrittlichere Angriffsszenarien denkbar aber belassen wir es dabei.
Funktionsweise
Die Idee hinter MTA_STS basierte ist nun wieder, dass ein Empfängersystem sicher veröffentlicht, dass es auf jeden Fall Mails per STARTTLS mit einem bestimmten Zertifikaten annimmt. Wenn der Empfänger diese Informationen so veröffentlicht, dass ein Absender diese auslesen und verifizieren kann, kann er bei einer Verbindung zum Mailserver sicherstellt, dass keiner sich dazwischen geschaltet hat.
Hinweis:
Der DNS-Eintrag lautet nicht mehr auf "_smtp_sts"
sondern "_mta_sts".
So ein Verfahren gibt es schon unter dem Begriff DANE - DNS-Based Authentication of Named Entities, bei dem ein Administrator diese Informationen samt Zertifikat im DNS hinterlegt. Voraussetzung ist dabei aber die Nutzung von DNSSEC, denn ansonsten könnte ein Angreifer über DNS-Manipulationen diese Informationen natürlich auch fälschen. DNSSEC ist aber bei weitem noch nicht überall verfügbar und viele Administratoren werden sich auch damit schwer tun, die Informationen im DNS einzutragen.
MTA_STS nutzt aber ebenfalls DNS und veröffentlicht hierüber eine Information, die dem Absender mitteilt, welche Policy für den Versand an diese Zieldomäne gelten soll. Die Gültigkeit der Policy muss natürlich verifiziert werden. DNSSEC ist eine Option aber wenn dies nicht möglich ist, dann ist z.B. HTTPS eine alternative. Dazu wird eine URL veröffentlicht. Dies ist aber nicht mit HSTS (HTTP Strict Transport Security) zu vergleichen, bei dem Ein Webserver innerhalb einer bereits verschlüsselten HTTPS-Verbindung über einen zusätzlichen Header den Browser anweist, zukünftig nur noch verschlüsselt mit diesem Host zu kommunizieren, was ein unbemerktes Downgrade einer Verbindung auf http verhindern soll.
Die Einträge in der DNS-Zone sind einfache TXT-Records, wie wir sie schon häufiger kennen. In dem ersten Entwurf war noch von "smtp_sts" als Prefix geschrieben wurde. In der Versoin 11, die zum Zeitpunkt dieses Artikels aktuell war, wird der String "_mta-sts" genutzt. Dieser findet sich auch bei den ein oder andere Domains. Sie veröffentlicht GMAIL.COM den folgenden Eintrag
C:\Users\fcarius>nslookup -q=TXT _mta-sts.gmail.com Server: fritz.box Address: 192.168.178.1 Nicht autorisierende Antwort: _mta-sts.gmail.com text = "v=STSv1; id=20160707T010757;"
Als Version wird aktuell nur STSv1 unterstützt und die ID ist ein beliebiger String, den Sie nur ändern müssen, wenn Sie eine neue Policy veröffentlicht haben. Ein Mailserver fragt diesen Wert und kann ihn gegen die Daten in seinem Cache prüfen, ob er eine neue Policy laden muss.
Wenn ihre Maildomäne bei einem Provider gehostet wird, dann ist auch ein CNAME erlaubt. So muss ich mich nicht um die Einträge kümmern.
_mta-sts.msxfaq.de. IN CNAME _mta-sts.1und1.com.
Der Validator sollte dann einen HTTPS-Request auf den "Well-known" Name ausführen. Er muss natürlich prüfen, ob das vom Webserver gelieferte Zertifikat den Namen (Wildcard geht auch) enthält, der Gültigkeitsbereich stimmt und von einer vertrauenswürdigen CA ausgestellt ist. Ein Zugriff per HTTP muss nicht funktionieren und macht auch keinen Sin. Schließlich möchte ich ja sicherstellen., dass ich eine verschlüsselte und vor allem verifizierbare Verbindung per HTTPS zu einem Webserver mit einem "öffentlichen Zertifikat" erreiche. So sollte ich dann sicher sein, dass die erhaltene Information auch zutreffend ist. ein Sender darf bei einer Subdomains nicht die Policy einer darüber liegenden Domain abfragen.
https://mta-sts.<maildomain>/.well-known/mta-sts.txt"
Der WebServer liefert dann ein 200OK "Text/Plain"-Dokument aus, welches z.B. folgende Information enthält. Umleitungen (3xx) o.ä. sind nicht erlaubt. Bei Google sieht das wie folgt aus:
Die Abfrage ist auch per PowerShell schnell ausgeführt:
PS C:\> (Invoke-WebRequest "https://mta-sts.gmail.com/.well-known/mta-sts.txt").content version: STSv1 mode: report policy_id: 1503837332 mx: gmail-smtp-in.l.google.com mx: .gmail-smtp-in.l.google.com max_age: 86400
Die Einträge hinter dem "mx" sind die Namen der Mailserver, die in den Zertifikaten auftauchen. Damit der Absender aber überhaupt ein Zertifikat sieht, muss die Gegenseite natürlich STARTTLS unterstützen und der Absender auch STARTTLS anfordern und erzwingen. Der Mailserver muss dazu auch mindestens TLS 1.2 bereitstellen.
Schwäche
Die sicherlich größte Schwäche ist, dass die DNS-Abfrage nicht per DNSSEC gesichert und und nicht erzwungen werden kann. Wenn ich also Mails an ihre Domain mitlesen möchte, dann muss ich nur dafür sorgen, dass der absendende Server per DNS gar keine Antwort auf eine Anfrage nach einem TXT-Record "_mta-sts.<domain>" bekommt und der absendende Server noch keine Information darüber im Cache hat. Dann sieht er keinen Eintrag und erzwingt kein STARTTLS mit dem richtigen Zertifikat. Auch die anderen möglichen Angriffe sind in der RFC schön beschrieben.
Zwischenstand
Wenn MTA_STS wirklich eingeführt wird, dann wäre es eine Verbesserung aber keine Lösung denn:
- Die Mailserver müssten es unterstützen
Ich kenne aktuell noch keine Pläne bei Exchange aber auch nicht bei anderen Relays. Sicher hilft es den großen Anbietern wie MSN, GMX, Google, Outlook.com, über die Millionen private Konten gefahren werden und wenn Office 365 auch SMTP_STS unterstützt, dann haben mehr und mehr Firmen auch was davon. Aber dennoch gibt es noch viel viel mehr kleine Mailserver, Relays etc., die alle erst mal ertüchtigt werden müssten. Es wird also dauern - Keine Ende zu Ende-Verschlüsselung
SMTP_STS zielt allein darauf ab die Verbindung zwischen zwei Mailservern zu härten, damit sich niemand anderes als Empfängerserver ausgeben kann. Auf dem Server selbst sind die Mails aber weiterhin unverschlüsselt
Wann wäre ja auch mal wichtig, welche Firmen schon einen entsprechenden "_mta_sts.example.com"-Record veröffentlicht haben. Ich hätte ja erwartet, dass zumindest die Autoren der Studie schon damit arbeiten. Also habe ich mal schnell ein paar NSLOOKUP-Anfragen gemacht:
nslookup -q=TXT _mta-sts.<domain>
Resolve-DnsName _mta-sts.gmx.com -Type TXT Name Type TTL Section Strings ---- ---- --- ------- ------- _mta-sts.gmx.com TXT 86400 Answer {v=STSv1;id=20180928194800Z;}
Die Ergebnisse sind überschaubar um nicht ernüchternd oder verheerend zu sagen. Selbst von den Domänen der Autoren selbst ist nur Google dabei und zwei weitere unvollständig. Als wenn Yahoo und web.de damals mitgemacht aber eine Umstellung des WebServers nicht überlebt hätte.
Eine Stichprobe vom Stand Oktober 2018.
Domain | _mta_sts-Eintrag | https-Antwort auf GET https://mta-sts.<hostname>/.well-known/mta-sts.txt |
---|---|---|
gmail.com |
{v=STSv1; id=20171114T070707;} |
(Invoke-WebRequest https://mta-sts.gmail.com/.well-known/mta-sts.txt).content version: STSv1 mode: testing mx: gmail-smtp-in.l.google.com mx: *.gmail-smtp-in.l.google.com max_age: 86400 |
Yahoo.com |
"v=STSv1; id=20161109010200Z;" |
(Invoke-WebRequest https://mta-sts.yahoo.com/.well-known/mta-sts.txt).content version: STSv1 mode: testing mx: *.am0.yahoodns.net mx: *.mail.gm0.yahoodns.net mx: *.mail.am0.yahoodns.net max_age: 86400 |
gmx.com |
{v=STSv1;id=20180928194800Z;} |
(Invoke-WebRequest https://mta-sts.gmx.com/.well-known/mta-sts.txt).content version: STSv1 mode: testing mx: mx00.emig.gmx.net mx: mx01.emig.gmx.net max_age: 604800 |
gmx.net |
{v=STSv1;id=20180928194800Z;} |
(Invoke-WebRequest https://mta-sts.gmx.net/.well-known/mta-sts.txt).content version: STSv1 mode: testing mx: mx00.emig.gmx.net mx: mx01.emig.gmx.net max_age: 604800 |
gmx.de |
|
|
web.de |
"v=STSv1;id=20170124174800Z;" |
PS C:\> (Invoke-WebRequest https://mta-sts.yahoo.com/.well-known/mta-sts.txt).content version: STSv1 mode: testing mx: *.am0.yahoodns.net mx: *.mail.gm0.yahoodns.net mx: *.mail.am0.yahoodns.net max_age: 86400 |
mail.de |
{v=STSv1; id=0000001;} |
(Invoke-WebRequest https://mta-sts.mail.de/.well-known/mta-sts.txt).content version: STSv1 mode: testing mx: mx01.mail.de mx: mx02.mail.de max_age: 86400 |
comcast.com |
|
|
microsoft.com |
|
|
outlook.com |
|
|
1und1.de |
|
|
1and1.com |
|
|
linkedin.com |
|
|
Über den ersten Draft vom Mai 2016 hinaus hat nun zumindest auch Yahoo Einträge addiert. ist auch noch nichts weiter passiert. Ich habe den Eindruck, als wenn ein Tiger hier dann doch wieder als Bettvorleger landet. Allerdings wird auch an vielen Stellen geschrieben, dass diese Technik gar nicht für jeden und alle Firmen und Domänen gedacht ist sondern primär für die "Massenprovider" eine Absicherung bieten soll. Das macht es aber nicht besser.
Weitere Links
- TLS Security
- STARTTLS ist nicht genug !
- DMARC
- DNSSEC
- DANE - DNS-Based Authentication of Named Entities
- Spam und UCE - Filter: SPF, SenderID
- Spam und UCE - Filter: DKIM
- SMTP Strict Transport Security draft-margolis-smtp-sts-00
https://tools.ietf.org/html/draft-margolis-smtp-sts-00 - Is SMTP STS a major step towards email security?
https://blog.mailfence.com/is-smtp-sts-a-major-step-towards-email-security/ - SMTP Strict Transport Security Coming Soon to Gmail, Other
Webmail Providers
https://threatpost.com/smtp-strict-transport-security-coming-soon-to-gmail-other-webmail-providers/123789/ - SMTP Strict Transport Security may improve transport
encryption for email
https://www.feistyduck.com/bulletproof-tls-newsletter/issue14_smtp_strict_transport_security.html - MTA-STS (Strict Transport Security)
https://www.frankysweb.de/mta-sts-strict-transport-security/ - Bessere Transportverschlüsselung zwischen Mailservern
https://www.golem.de/news/smtp-sts-bessere-transportverschluesselung-zwischen-mailservern-1603-119955.html - What is SMTP STS? How It improves Email Security for
StartTLS
https://thehackernews.com/2016/03/smtp-sts-email-security.html - SMTP MTA Strict Transport Security (MTA-STS)
https://datatracker.ietf.org/doc/draft-ietf-uta-mta-sts/ - SMTP MTA-STS TestTools
https://www.fraudmarc.com/smtp-mta-sts-policy-check/
https://aykevl.nl/apps/mta-sts/ - Opportunistic Security: Some Protection Most of the Time
https://tools.ietf.org/html/rfc7435