1 Punkte von GN⁺ 2025-07-13 | 4 Kommentare | Auf WhatsApp teilen
  • Das MV3-Update von Chrome entfernt die Berechtigung webRequestBlocking, um die Fähigkeiten bestehender Adblocker einzuschränken
  • Der Autor entdeckte 2023 einen Bug, mit dem sich auch in einer MV3-Umgebung webRequestBlocking umgehen ließ
  • Der Bug entstand durch die lockere Struktur der JavaScript-Bindings und alten Code, der unverändert erhalten geblieben war
  • Durch Manipulation der WebView-Instanz-ID ließ sich die Rechteprüfung umgehen, sodass die Blocking-Funktion auch unter MV3 nutzbar war
  • Inzwischen wurde ein Patch eingespielt, daher funktioniert diese Umgehungsmethode nicht mehr

MV3 und die Veränderungen bei Adblockern

  • Chrome schafft MV2-Erweiterungen schrittweise ab und stellt stattdessen auf MV3 um
  • MV3 entfernt die Berechtigung webRequestBlocking, sodass Adblocker Netzwerk-Anfragen nicht mehr per Skript dynamisch blockieren können
  • Statt dieser Berechtigung wurde die API declarativeNetRequest hinzugefügt, sie bietet jedoch nicht dieselbe Flexibilität
  • Durch diese Änderung sinkt die Leistungsfähigkeit von Adblockern deutlich

Grenzen der JavaScript-Binding-Struktur

  • Der Chrome-Kern ist zwar in C++ entwickelt, Erweiterungen laufen jedoch in JavaScript, und auch die Erweiterungs-APIs werden über JS-Bindings angesprochen
  • Bis 2015–2016 wurden JS-Dateien (Erweiterungs-Binding-Module) in Seiten injiziert, um APIs zu initialisieren und zu prüfen
    • Diese Methode war anfällig für das Überschreiben globaler JS-Funktionen und Prototypen, wodurch mehrere Universal-XSS-Bugs entstanden
  • Danach verlagerte Google wichtige Bindings nach C++, einige JS-Binding-Dateien sind jedoch bis heute geblieben
  • Noch immer verwenden bestimmte APIs wie chrome.webRequest diese JS-Binding-Struktur

Umgehung über Klassen für Web-Request-Events

  • In MV2 ließ sich das Blockieren von Web-Requests mit folgendem Code umsetzen

    chrome.webRequest.onBeforeRequest.addListener(() => { return { cancel: true } }, { urls: ['*://*.example.com/*'] }, ['blocking'])
    
  • In MV3 ist die Option blocking verboten, daher ist normales Blockieren nicht möglich

  • Über den .constructor des webRequest-Events lässt sich jedoch ein beliebiges Event-Objekt erzeugen

  • Intern verwaltet eine spezielle Wrapper-Klasse aus den JS-Bindings dieses Event-Objekt

  • Wird einer der Konstruktorparameter, opt_webViewInstanceId, gesetzt, kann die nur für Plattform-Apps gedachte Freigabelogik umgangen und damit die Prüfung der Blocking-Berechtigung übersprungen werden

    let WebRequestEvent = chrome.webRequest.onBeforeRequest.constructor
    let fakeEvent = new WebRequestEvent("webRequest.onBeforeRequest", 0, 0, 0, 1337)
    
    fakeEvent.addListener(() => { return { cancel: true } }, { urls: ['*://*.example.com/*'] }, ['blocking'])
    
  • Ursprünglich war dies nur für Plattform-Apps vorgesehen, durch die unzureichende Prüfung der WebView-ID konnte es jedoch von gewöhnlichen Erweiterungen missbraucht werden

Ergebnis und Sicherheitspatch

  • Durch diese Schwachstelle war es tatsächlich möglich, auch in einer MV3-Umgebung einen vollwertigen Adblocker zu entwickeln
  • Der Autor meldete den Bug 2023 an Google; in Chrome 118 wurde er durch eine korrekte Prüfung des Besitzes der WebView-Berechtigung gepatcht
  • Es wurde keine Prämie ausgezahlt, was auf die strukturelle Eigenschaft zurückgeführt wird, dass nur eine Rechteumgehung ohne zusätzliche Datenoffenlegung möglich war
  • Der Fall zeigt, dass einige Dutzend geänderte Codezeilen das Sicherheits-Update eines Großkonzerns wirkungslos machen können

Fazit und Verweis

  • Der Bug ist inzwischen gepatcht und funktioniert nicht mehr
  • Als ähnlich interessanter Fall einer Schwachstelle rund um Chrome-Erweiterungen existiert auch ein Beispiel, das tatsächlich eine CVE-Nummer und eine Belohnung von 10.000 US-Dollar erhielt (siehe separaten Blogbeitrag)

4 Kommentare

 
hhcrux 2025-07-14

Wahrscheinlich haben die Adblock-Anbieter seit diesem Update sogar noch mehr Umsatz gemacht.
Standalone-Apps, die Werbung gleich auf Netzwerkebene blockieren, sind ohnehin nur kostenpflichtig nutzbar, daher dürften sie sich ziemlich gut verkauft haben.

 
crawler 2025-07-14

Ein Schwachstelle zu posten, die nach ganzen zwei Jahren längst jede Bedeutung verloren hat, und dann extra noch zu erwähnen, dass man dafür nicht bezahlt wurde ... persönlich finde ich das nicht gerade cool.
Aber vermutlich muss man so etwas auch in einen Blog schreiben, um den eigenen Wert zu beweisen, oder?
Ehrlich gesagt würde ich diese Denkweise auch gern lernen und viel mehr Blogbeiträge schreiben.

 
ndrgrd 2025-07-14

Nehmt einfach Firefox. Er ist in den letzten 1–2 Jahren deutlich schneller geworden und inzwischen wirklich nicht schlecht.
Ich nutze Firefox seit Jahren als Hauptbrowser und vergleiche ihn gelegentlich mit Chrome; gerade in letzter Zeit habe ich das Gefühl, dass Firefox absolut alltagstauglich geworden ist.
Selbst Webseiten wie die koreanischer Banken, die Webstandards früher ignoriert haben, wurden zuletzt stark verbessert, sodass die meisten inzwischen auch in Firefox gut funktionieren.
Anpassungen sind mit Firefox außerdem viel einfacher.

 
GN⁺ 2025-07-13
Hacker-News-Kommentare
  • Obwohl ich Firefox gern einmal ausprobieren würde, sind gelegentliche Bugs beim Laden von Websites und vor allem die Tatsache, dass sich keine PWA (Progressive Web Apps) installieren lassen, die größten Hürden. Chrome und seine Derivate unterstützen das schon seit Langem, und ich verstehe nicht so recht, warum Firefox das noch immer nicht implementiert hat. Ich habe zwar eine Drittanbieter-Erweiterung gefunden (PWAs for Firefox), aber aus Datenschutzgründen zögere ich, sie zu verwenden

  • Selbst wenn es Wege gibt, Googles Verhalten zu umgehen, halte ich das nicht für den richtigen Weg. Wenn Menschen mit Googles Kurs nicht einverstanden sind, ist der einzige richtige Weg, Chrome und alle Chromium-basierten Browser aufzugeben. Es ist wichtig, Googles Monopol zu schwächen und ihm die Kontrolle über die künftige Richtung des Webs zu entziehen

    • Ich denke, das heutige Monopol ist darauf zurückzuführen, dass alle die Lektion vergessen haben, die wir aus IE hätten lernen müssen. Ursache ist, dass man Webstandards nicht lernt und stattdessen Chrome zusammen mit Anwendungen gebündelt ausliefert
    • Darum geht es in dem Artikel aber gar nicht; im eigentlichen Artikel wird erwähnt, dass dieser Umgehungsweg in Chrome 118 gepatcht wurde
    • Ich würde gern spöttisch fragen, ob sich jemals wirklich etwas geändert hat, nur weil jemand sagte, man müsse „dem Monopol schaden“
    • Realistisch betrachtet wird das nicht passieren
    • Viele halten es nicht für ausreichend, zu Chromium-Browsern zu wechseln, bei denen Google-Tracking entfernt wurde, aber ich denke, genau das ist eher das Framing, das Google sich wünscht. Firefox ist deutlich anders als Chrome und der Umstieg von Chrome nicht einfach. Brave, angepasstes Chromium, Vivaldi usw. dagegen sind im Grunde fast identisch mit Chrome ohne Google-Tracking. Die Behauptung „Google kontrolliert Chromium immer noch, also geht das nicht“ ist meiner Meinung nach genau die Art von FUD (Angst, Unsicherheit und Zweifel), die man aus Googles Sicht verbreiten würde
  • Die echte Umgehung ist, Firefox zu benutzen. uBlock Origin funktioniert auf Firefox am besten
    uBlock Origin works best on Firefox

    • Ich habe immer Firefox benutzt, deshalb wusste ich gar nicht, dass so etwas passiert. Erst als meine Frau sagte, dass sie auf YouTube Werbung sieht, habe ich nachgesehen — obwohl ich ihr schon früher uBlock installiert hatte
  • Ich frage mich auch, ob Google wirklich belegen kann, dass MV3 tatsächlich sicherer ist als MV2. Es wirkt nicht so, als würde der Wechsel zu MV3 die Sicherheit grundsätzlich erhöhen

    • Ehrlich gesagt wundert es mich, ob das wirklich jemand glaubt. Schon der Artikel selbst beginnt mit einem offensichtlichen Interessenkonflikt. Es ist natürlich eine angreifbare Umgebung, wenn eine Erweiterung wissen darf, welche Websites ein Nutzer besucht und welche Anfragen gestellt werden. Trotzdem vertraue ich uBO mehr als Werbefirmen und Datensammlern und nutze es deshalb einfach weiter
  • Zu dem Fall, dass jemand einen Umgehungsweg für Adblocker entdeckt und Google gemeldet hat, gab es die Reaktion: „Findet etwas heraus und petzt dann sofort bei Google, großartig“

    • Tatsächlich hätte Google das sofort gepatcht, sobald Adblocker angefangen hätten, es zu nutzen, und der betreffende Entwickler hätte nichts davon gehabt. Ironischerweise wäre also so oder so nichts dabei herausgekommen
  • Der OP hat bei Google ein „Issue“ gemeldet, das eigentlich überhaupt kein Problem war, und damit verhindert, dass Add-on-Entwickler die MV3-Beschränkungen umgehen können. Hoffentlich war es die 0 $ wert

    • Solche Umgehungen wären spätestens innerhalb eines Tages direkt von Google entfernt worden. Der OP hätte im Gegenteil vielleicht sogar eine finanzielle Belohnung bekommen können, also war es aus seiner Sicht nachvollziehbar. Ich möchte ihn dafür nicht kritisieren
    • Ich stimme dieser Schlussfolgerung nicht zu. Die gesamte Verantwortung liegt bei Google. Selbst wenn der OP das Issue nicht gemeldet hätte, hätte Google es schnell unterbunden, sobald ein anderer Adblocker diese Methode später genutzt hätte. Vielleicht hätte man sogar zu der extremen Maßnahme gegriffen, die betreffende Erweiterung ganz aus dem Web Store zu entfernen
    • Wenn ein tatsächlich von Menschen genutzter Adblocker diese Methode implementiert hätte, hätte Google sie natürlich sofort blockiert. Das ist kein Cheatcode, den man unbegrenzt einsetzen kann
    • Ich sehe das genauso. Der OP hat praktisch kostenlos für einen Großkonzern gearbeitet und dadurch das Web am Ende unbequemer gemacht. Der Grund ist dann wohl ... „Sicherheit“. Großartig
  • Seit ich Brave nutze, vermisse ich Chrome überhaupt nicht mehr
    Brave

    • Ich finde Brave eher noch unbequemer als Chrome. Abgesehen von den Problemen rund um Brendan Eich gibt es im Browser zu viel eingebauten Ballast: allerlei willkürliche Funktionen, Werbeblockierung (Brave Shields), die man nicht vollständig abschalten kann, Krypto-Kram, einen nicht deaktivierbaren Download-Button für Web-Apps, UI-Elemente, die man nicht entfernen kann, und noch mehr Müll
    • Brave ist immer noch ein profitorientiertes Unternehmen, und allein schon die standardmäßig übermäßig vielen unnötigen Funktionen stoßen mich ab. Allerdings gibt es auch etliche Tipps wie „Wie man Brave auf Diät setzt", um die Einstellungen schlanker zu machen
    • Die Engine ist letztlich Blink, also hat sich im Grunde nur die Hülle geändert. Ich habe noch keinen Blink-Browser gesehen, der Manifest V2 dauerhaft beibehält. Selbst wenn es einen gäbe, wäre das nur ein Soft Fork und würde nicht lange durchhalten
    • Brave basiert am Ende ebenfalls auf Chromium und ist damit faktisch dasselbe wie Chrome. Manifest V3 wird letztlich zwangsläufig auch dort kommen
    • Es gibt auch eine kritische Sichtweise, dass man den Brave-Browser nicht verwenden sollte
      Stop using Brave browser
  • Auf die Behauptung „Adblocker brauchen unbedingt webRequestBlocking, und weil Google sein Geld mit Werbung verdient, wurde diese Funktion sehr absichtlich entfernt“ gibt es auch die Gegenmeinung: „Das stimmt nicht, jeder kann uBlock Origin Lite in Chrome und mit Manifest V3 verwenden, die Leistung ist gut und ich merke keinen Unterschied zum bisherigen uBlock Origin. Alles wird in C++ gefiltert und ist dadurch viel schneller. Natürlich gibt es eine Begrenzung bei der maximalen Zahl an Regeln, aber das ist derzeit völlig handhabbar“

    • Lite ist aber eben Lite und deshalb in seinen Möglichkeiten eingeschränkt. Schon deshalb ist es nicht vollständig dasselbe wie ein ursprünglicher Adblocker
  • Außer auf dem Arbeitslaptop nutze ich Chrome gar nicht, und privat bleibe ich weiterhin bei Firefox. Trotzdem finde ich es schade, dass ich uBlock Origin, das mir bei beruflichem Surfen im Web (Recherche, Dokumente usw.) hilfreich war, dort nicht mehr nutzen kann

  • Wenn man einfach nur eine Umgehung will, muss man eben Firefox installieren

    • Ich halte Firefox weder als Webbrowser noch als Basis für besonders gut. Schade, dass Zen nicht Chromium verwendet