uBlock CSS-Injection
uBlock CSS-Injection
Bildquelle: honeybee

uBlock CSS-Injection: Angriff über Filterlisten

Tavis Ormandy und Gareth Heyes haben mehre Sicherheitslücken in uBlock entdeckt, die CSS-Injections auf beliebigen Webseiten erlaubten.

Die Sicherheitsforscher Tavis Ormandy und Gareth Heyes haben mehre Sicherheitslücken in uBlock entdeckt, die CSS-Injections auf beliebigen Webseiten erlaubt haben. Dazu hätte man das Opfer dazu bringen müssen, eine bösartige Filterliste zu installieren. Alternativ hätte man auch den Angriff über eine bestehende Filterliste fahren können.

Adblocker wie uBlock sind bei vielen Techies im Einsatz. Die Gründe sind vielfältig. Primär dienen sie dazu Werbung und Tracker beim surfen abzuschalten. Das spart Datenvolumen und lenkt weniger ab. Adblocker kann man aber auch einsetzen, um sich vor möglichen Exploit aus Werbenetzwerken zu schützen.

Was ist CSS-Injection

CSS-Injection erlaubt es beliebiges CSS auf einer Webseite einzuschleusen. Dies klingt zunächst erst einmal kaum beunruhigend. CSS dient primär dazu, die Optik einer Webseite zu gestalten. Dem ist aber nicht so, da man per CSS auch externe Inhalte nachladen kann. Im schlimmsten Fall bedeutet das, dass der Angreifer beliebigen JavaScript Code im Kontext der Webseite ausführen kann und so zum Beispiel Cookies oder Zugangsdaten abgreifen kann.

uBlock erlaubt restriktives CSS-Injection

Der Adblocker uBlock erlaubt es in Filterlisten sehr eingeschränkt eigenes CSS einzubinden. Damit kann man zum Beispiel bei geblockten Werbebildern auch dazugehörige Rahmen entfernen. Dieses Feature wird kosmetischer Filter genannt. Damit kein CSS eingeschleust werden kann, welches externe (bösartige) Inhalte nachladen kann, werden Filter eingesetzt. Diese Filter waren aber nicht fehlerfrei und so konnten die Sicherheitsforscher Wege daran vorbeifinden.

Ein einfaches Beispiel hat Tavis Ormandy auf Twitter gepostet. Diese uBlock CSS-Injection erlaubt es, eine beliebige URL als Hintergrundbild einzusetzen. (hier Google)

Gareth Heyes extrahiert Texte — per CSS

Mithilfe eines CSS-Fuzzers hat Gareth Heyes verschiedenste Möglichkeiten gefunden, bösartiges CSS einzuschleusen. In seinem GitHub Repository hat Heyes verschiedene Beispiele gesammelt, wie man per CSS Daten von einer Webseite extrahieren kann.

Ein Ansatz ist es, für jeden Buchstaben in einem Textfeld eine eigene Schriftart zu definieren. Weiterhin wird bei der erstmaligen Eingabe eines Buchstabens die Schriftart dynamisch nachgeladen. Damit kann man ohne JavaScript einen (zumindest eingeschränkten) Keylogger implementieren.

Beispiel mit der Eingabe von tarnkappe.info

Andere Ideen von ihm waren es, spezielle CSS-Selektoren zu verwenden, die zum Beispiel nur den ersten Buchstaben in einem Textblock mit individuellem CSS versehen. Weitere tiefergehende Details finden sich in seinem Blogpost über CSS-Injection in uBlock.

Auch uBlock schafft mögliche Sicherheitslücken

Aus der jetzt bekannt gewordenen CSS-Injection-Lücke wird wieder eines klar: Jede eingesetzte Software und jedes Feature schafft neue Angriffsvektoren, auch wenn sie vielleicht vor anderen schützen könnte. Hier waren die kosmetischen Filter die Ursache. Dieses Feature lässt sich aber im Zweifel auch deaktivieren, da in Zukunft vielleicht wieder ein Weg an den implementierten Filtern vorbei gefunden werden kann.

Ein paar persönliche Worte von mir

Ich hatte sehr viel Spaß beim Lesen des zugrunde liegenden Blogposts und habe wieder gemerkt: Ich brenne für IT-Security. Immer wieder bekomme ich Gänsehaut, wie kreativ manche Menschen bei solchen Themen werden, um verschiedenste Schutzmechanismen zu umgehen. Ich hoffe, ich konnte mit diesem Text auch ein Flämmchen entzünden.

Über

honeybee schreibt seit Ende 2020 für die Tarnkappe. Der Einstieg war ein Reverse Engineering Artikel über die Toniebox. Die Biene liebt es, Technik aller Art in ihre Bestandteile zu zerlegen. Schraubendreher und Lötkolben liegen immer in Reichweite. Themen wie Softwareentwicklung, Reverse Engineering, IT-Security und Hacking sind heiß geliebt.