Nehmen Sie beispielsweise die Login-Maske einer Web-Seite, die aus einem Benutzernamensfeld und einem Passwortfeld besteht. Gibt ein Angreifer eine beliebige Benutzername/Passwort-Kombination an und antwortet der Server mit der Fehlermeldung
»Ungültiger Benutzername
«
, so lernt der Angreifer, dass dieser Benutzername nicht existiert.
Abbildung 1
zeigt, dass beispielsweise die Wikipedia solche Informationen frei kommuniziert. Diese Information ist interessant für den Angreifer, um etwa einen gezielten Brute-Force-Angriff auf existierende Benutzernamen durchzuführen. Daher sollten Web-Seiten möglichst mit einer generischen Fehlermeldung antworten, die Benutzer zwar auf den Fehler hinweist, jedoch keine vertraulichen Informationen verrät.
In Extremfällen kann alleine die Tatsache, dass ein Angreifer Fehlerzustände erkennen kann, zu fatalen Sicherheitslücken führen. So haben Jager und Somorovsky vor Kurzem einen Angriff auf den Verschlüsselungsstandard "XML Encryption" vorgestellt, durch den ein Angreifer Chiffretexte entschlüsseln kann [1] . Der Angreifer muss dafür einen Chiffretext abhören können, verändern können und an den Zielserver senden können. Alleine die Unterscheidung, ob der Server einen Entschlüsselungsfehler meldet oder nicht, reicht dem Angreifer, um die einzelnen Bytes des Chiffretexts zu entschlüsseln. Bei dem beschriebenen Angriff benötigt der Angreifer nur rund 14 Anfragen an den Server, um ein Byte des Chiffretexts zu entschlüsseln.
Der zugrunde liegende Angriff basiert auf sogenannten Padding Oracles, die bereits 2002 von Serge Vaudenay vorgestellt wurden und die kürzlich auch von Juliano Rizzo und Thai Duong [3] genutzt wurden, um Captchas und View-States von Web-Entwicklungs-Frameworks zu brechen. Die von Rizzo und Duong beschriebenen Angriffe nutzten dabei aus, dass die anfälligen Anwendungen vertrauliche Informationen verschlüsselten und an den Browser weiterleiteten. Die Entwickler der anfälligen Anwendungen hatten sich darauf verlassen, dass der Angreifer dank der Verschlüsselung die Daten nicht lesen kann.
So wurde vom Captcha-Provider nicht nur das verschleierte Captcha, sondern auch seine verschlüsselte Lösung an den Benutzer gesendet. Nach der Eingabe des Benutzers sendet dessen Browser die vom Benutzer gefundene und die zuvor verschlüsselt erhaltene Lösung an den Provider zurück. Das hat den Vorteil, dass der Captcha-Provider die Benutzer-Session nicht serverseitig verwalten muss. Rizzo und Duong konnten die Lösung des Captchas über ein Padding Oracle entschlüsseln und somit das Captcha brechen. Das zeigt, wie ein Angreifer manchmal selbst komplizierte kryptografische Konzepte überwinden kann, indem er nur die Fehlermeldungen eines Systems auswertet.