Man zeigt nicht mit dem Finger auf andere Leute

Das lernte ich schon als Kind und das gebe ich auch an meine Kinder weiter. In meinen Sessions werde ich beim Thema Security oft gefragt, wie ich zu dem Verhalten von anderen Anwendungen und anderen Herstellern stehe. Warum rede ich immer nur über unsere Produkte? Andere sind doch auch nicht besser, sondern unbreakable oft viel schlechter.

Der Grund ist ganz simple: Man zeigt nicht mit dem Finger auf andere Leute!

Wenn ich über Security in unseren Produkten rede, dann zeige ich, welche Schwachstellen uns in der Vergangenheit beschäftigt haben, welche Lösungen wir dafür heute schaffen und welche Designentscheidungen wir treffen, um neue Bedrohungsszenarien von Anfang an zu begegnen. Mit dieser Vorgehensweise bin ich bei Microsoft nicht allein - unsere Konkurrenz handelt manchmal aber auch anders.

In den letzten Tagen gab es viele Diskussionen um die Möglichkeit, unter Windows Anwendungen durch eine speziell geformte URL über einen Application URL Protocol Handler zu starten. Dabei ging es am meisten um eine Sicherheitslücke in Mozilla Firefox, welcher bei dem firefoxurl:-Handler die übergebenen Daten als sicher betrachtet und nicht validiert. Über die -chrome-Option kann man damit Anwendungen mit den Rechten des angemeldeten Benutzers auf dem lokalen PC ausführen.

Mit der Veröffentlichung der Firefox-Version 2.0.0.5 lehnte sich das Mozilla-Team hier sehr weit aus dem Fenster. Window Snyder als Chief Security Something-or-Other bei Mozilla stellt folgende Behauptung in ihrem Blog auf:

Mozilla believes in defense in depth and will be patching Firefox in the upcoming 2.0.0.5 release to mitigate the problem. This will prevent IE from sending Firefox malicious data.

Firefox registriert bei der Installation den firefoxurl:-Handler. Für diesen Handler wird die Übergabe von nicht vertrauenswürdigen Daten aus einer entfernten und nicht vertrauenswürdigen Quelle, bei der es sich weder um das Betriebsystem, noch um Eingaben des Benutzers handelt, deklariert und dokumentiert. Um es ganz klar zu sagen: Die Daten können von einem potentiellen Hacker stammen.

Mit der Registrierung eines Application URL Protocol Handlers sagt also diese Anwendung der Welt: Ich nehme über diesen speziellen Kanal Daten entgegen. Es ist interessant zu sehen, wie man das eigene Vertrauen in die Korrektheit der übergebenen Daten umdreht in einen Angriff gegen den Internet Explorer.

Weiter geht es dann bei Windows Snyder:

Any Windows application that calls a registered URL protocol without escaping quotes may be used to pass unexpected and potentially dangerous data to the application that registers that URL Protocol. This could result in a critical security vulnerability.

Die Erkenntnis ist nun nicht wirklich neu. Application URL Protocol Handler gibt es meines Wissens seit Windows 95. Das Problem ist hier nicht im Internet Explorer zu suchen. Die Anwendung, die übergebenen Daten aus dem Internet (zum Beispiel durch Application URL Protocol Handler über den Internet Explorer) blind vertraut, stellt ein potentielles Sicherheitsproblem dar. Daher ist die Antwort  des IE-Teams in diesem Punkt auch ganz deutlich:

URL protocol handlers are one of the ways we enable rich experiences in browsing, however, as with any other program that accepts untrusted data from the web, URL protocol handling applications must be carefully designed based on the threat environment.

Lesen wir bei Window Snyder weiter:

This patch for Firefox prevents Firefox from accepting bad data from Internet Explorer. It does not fix the critical vulnerability in Internet Explorer. Microsoft needs to patch Internet Explorer, but at last check, they were not planning to. ... Mozilla recommends using Firefox to browse the web to prevent attackers from taking advantage of this vulnerability in Internet Explorer.

Man zeigt nicht mit dem Finger auf andere Leute! Sowas entwickelt sich schneller zu einem Bummerang, als einem lieb ist. Jesper Johansson zeigt in seinem Blogeintrag Hey, Mozilla: Quotes Are Not Legal in a URL im Detail, wie Firefox eingestellt als Standard-Webbrowser selbst andere Anwendungen über Application URL Protocol Handler mit ungefilterten Daten versorgt:

Can you spot the glass house too? To paraphrase Window: "This patch for Firefox ... does not fix the critical vulnerability in Firefox. " That's correct. Following Mozilla's, and Thor Larholm's logic, Firefox is subject to the exact same flaw that they blame on IE! Firefox also does not escape quotes in URLs before it passes them on to protocol handlers. I won't speculate here on why they failed to fix that "flaw" in the new version of Firefox that was just released.

Firefox verhält sich hier genauso, wie die Definition der Handler es vorsieht und wie der Internet Explorer es auch macht. Ich finde es nur interessant, dass Mozilla in dem Verhalten des Internet Explorers eine kritische Verwundbarkeit sieht und bei dem eigenen Produkt noch nicht einmal auf die Idee gekommen ist, nachzuschauen, wie man es selbst handhabt. Dementsprechend kleinlaut wurde Window Snyder später:

Over the weekend, we learned about a new scenario that identifies ways that Firefox could also be used as the entry point. While browsing with Firefox, a specially crafted URL could potentially be used to send bad data to another application. We thought this was just a problem with IE. It turns out, it is a problem with Firefox as well. We should have caught this scenario when we fixed the related problem in 2.0.0.5. We believe that defense in depth is the best way to protect people, so we’re investigating it now.

Schade, dass Window Snyder nicht genug Rückgrat hat, hier klar Stellung zu beziehen. Eine Entschuldigung wäre hier wohl angebracht. Weiterhin wird Jesper mit keinem Wort erwähnt. Kein Dank für seine Analyse. Noch beschämender finde ich allerdings das Vorgehen, in den eigenen Kommentaren Links zu dem Blogeintrag von Jesper zu löschen.