Unter einer Reihe von Bedingungen ermöglicht die in AdBlock, AdBlock Plus und uBlock
mit Update 3.2 vom 17. Juli 2018 implementierte Filteroption
$rewrite
die Ausführung von beliebigem Code auf einer Webseite, die einem Benutzer angezeigt wird, berichtet der
Blog armin.dev .
So wird die Problemfunktion im AdBlock-Patch selbst beschrieben:
Dieser Patch implementiert die neue $rewrite
, mit der Autoren von Filterlisten die Anzeige (hauptsächlich von Videos) von Werbung verhindern können, die zuvor auf einer Reihe von Websites nicht blockiert werden konnte.
Die beschriebene Sicherheitsanfälligkeit betrifft alle drei genannten Werbeblocker, deren Gesamtpublikum 100 Millionen Nutzer übersteigt. Sie können damit jeden Webdienst angreifen, einschließlich, aber nicht beschränkt auf beispielsweise die Ressourcen von Google. Das Problem ist weit verbreitet, dh ein Angriff mit dem gleichen Erfolg kann auf jedem gängigen Browser ausgeführt werden und hängt nicht von seiner Version ab.
Die Sicherheitslücke dauerte fast 9 Monate und wurde erst jetzt gefunden.Essenz des Angriffs
Der Quell-Blogger erklärt, dass die Option
$rewrite
von AdBlock und den anderen genannten Blockern verwendet wird, um zu vermeiden, dass der Nutzer verfolgt und Anzeigen blockiert werden, indem Anforderungen von der besuchten Webseite umgeleitet werden. Mit
$rewrite
können Sie also Anforderungen wie
SCRIPT
,
SUBDOCUMENT
,
OBJECT
und
OBJECT_SUBREQUEST
umleiten und nicht verarbeiten.
Ein Angriff kann auftreten, wenn die Website
XMLHttpRequest
oder
Fetch
zum Herunterladen und Ausführen von Codefragmenten verwendet und gleichzeitig beliebige Anforderungen zulässt.
Das heißt, um einen Angriff auszuführen, müssen drei Bedingungen erfüllt sein:
- Die Webseite sollte die JS-Zeichenfolge mit
XMLHttpRequest
oder Fetch
laden und den zurückgegebenen Code ausführen. - Die Webseite sollte keine Anweisungen zur Überprüfung der Inhaltssicherheitsrichtlinie verwenden und die endgültige URL nicht überprüfen, bevor der heruntergeladene Code ausgeführt wird.
- Die Quelle des extrahierten Codes muss eine serverseitige Umleitung unterstützen oder beliebigen benutzergenerierten Inhalt enthalten.
Es scheint, dass es viele Bedingungen gibt, und CSP ist alles andere als eine Neuheit in der Welt der Webentwicklung. Die Hauptbedrohung für die gefundene Sicherheitsanfälligkeit besteht jedoch nicht darin, wie sie funktioniert, sondern wie sie sich ausbreitet.
Da die Filtersysteme AdBlock, AdBlock Plus und uBlock anfällig sind, ist die Möglichkeit, das endgültige Opfer zu „infizieren“, äußerst einfach - über das automatische Update-System von Filtern. Es ist kein Geheimnis, dass ein großer Teil der Benutzer vorgefertigte Filter verwendet, diese jedoch nicht selbst konfiguriert. In diesem Fall kann der Autor des Filterpakets ein böswilliges Update bereitstellen, einen Angriff ausführen und dann das Paket "rollen", wodurch die Spuren "gewischt" werden.
Wege zu kämpfen
Der einfachste Weg, sich vor der genannten Sicherheitsanfälligkeit zu schützen, ist der Wechsel zu uBlock Origin. Dieser Werbeblocker unterstützt die Funktion
$rewrite
nicht,
$rewrite
es ist unmöglich, den beschriebenen Angriff durch ihn zu implementieren.
Andernfalls sollten Sie auf eigenes Risiko auf das nächste AdBlock-Update warten. Buchstäblich wenige Stunden nach der Veröffentlichung im Blog armin.dev erschien
dieser Blogeintrag im offiziellen Blocker-Blog als Reaktion auf die Sicherheitsanfälligkeit
$rewrite
.
Darin stellt die AdBlock-Administration sicher, dass sie, obwohl die Sicherheitsanfälligkeit spezifisch ist, äußerst vorsichtig mit der Sicherheit ihrer Zielgruppe umgeht.
Im nächsten Update wird die Funktion $rewrite
aus AdBlock entfernt.
Nach den Zusicherungen der Verwaltung überprüfen sie außerdem alle Filterlisten und überprüfen sie jetzt noch einmal. Basierend auf den Ergebnissen des Audits meldet die Verwaltung, dass in keiner der vorhandenen Filterlisten die Methode zum Angriff auf den enthaltenen Benutzer beschrieben wurde. Da zwischen dem Zeitpunkt der Veröffentlichung des ursprünglichen Beitrags und der Antwort auf den AdBlock-Blog nur etwa vier Stunden vergangen sind, freuen wir uns nur über die Reaktionsfähigkeit des Blocker-Teams.
Gleichzeitig ist das Entfernen der Funktion
$rewrite
aus dem Projekt für AbBlock ein Rückschritt, da es ursprünglich zur Bekämpfung von Popup-Videoanzeigen erstellt wurde. Jetzt wird sie aus Gründen der universellen Sicherheit zurückkehren. Darüber hinaus zeigt die Geschwindigkeit, mit der beschlossen wurde,
$rewrite
vollständig aus dem Projekt zu entfernen, dass der Angriff zwar spezifisch ist, die Konsequenzen seines Massenverhaltens jedoch zu unheimlich sind.