Googles Manifest V3 wird die Funktionsweise von Chrome-Erweiterungen zum Blockieren von Werbung ändern: Soll es sie lähmen oder dient es der Sicherheit?

Google Chrome ist derzeit der beliebteste plattformübergreifende Webbrowser auf dem Markt. Bis Mai 2019 lag sein Anteil an der weltweiten Browsernutzung bei 62, 7%, gefolgt von Apples Safari mit 15, 89% und Mozillas Firefox mit 5, 07%. Aufgrund seines Löwenanteils wirken sich die kleinsten Änderungen, die Google Chrome für seine Plattform vornimmt, auf Millionen von Nutzern auf der ganzen Welt aus. Als Google die nächste Version des Erweiterungsmanifests in Form von Manifest V3 für Google Chrome Extensions ankündigte, wussten wir, dass wir einige große Änderungen vornehmen mussten, insbesondere, als sich herausstellte, dass Google eine Content-Blocker-API in Chrome selbst einrichtet.

Was ist Manifest V3?

Wenn Sie ein aktiver Chrome-Nutzer sind, verwenden Sie zweifellos einige Erweiterungen. Erweiterungen sind kleine Softwareprogramme, die das Surferlebnis mithilfe der vom Browser bereitgestellten APIs anpassen und es Benutzern ermöglichen, Funktionalität und Verhalten an ihre individuellen Bedürfnisse und Vorlieben anzupassen. Diese Erweiterungen werden hauptsächlich über den Chrome Web Store vertrieben, in dem sich mehr als 180.000 Erweiterungen befinden.

Seit Ende letzten Jahres arbeitet Google an "Manifest V3", einer Reihe von Änderungsvorschlägen für die Chrome Extensions-Plattform, die als "Breaking Changes" eingestuft werden können. Laut dem öffentlichen Diskussionsdokument für Manifest V3 handelt es sich um die Version des Erweiterungsmanifests Ein Mechanismus zum Einschränken bestimmter Funktionen auf eine bestimmte Klasse von Erweiterungen. Diese Einschränkungen können in Form einer Mindestversion oder einer Höchstversion vorliegen. Durch die Beschränkung auf eine Mindestversion können neuere APIs oder Funktionen nur für neuere Erweiterungen verfügbar sein, während durch die Beschränkung auf eine maximale Manifestversion ältere APIs oder Funktionen schrittweise veraltet werden.

Vereinfacht ausgedrückt, ermöglicht eine neue Manifest-Version Chrome, APIs und Funktionen auf diese neue Manifest-Version zu beschränken, um die Entwickler von Erweiterungen zu zwingen, aufgrund ihrer negativen Auswirkungen auf die Benutzerfreundlichkeit von bestimmten älteren APIs abzuweichen. Die Implementierung einer Erweiterung in Manifest V3 sollte theoretisch stärkere Garantien unter den Gesichtspunkten Sicherheit, Datenschutz und Leistung bieten.

Während in Manifest V3 eine Vielzahl von Änderungen beschrieben ist, bezieht sich die umstrittenste Änderung auf die Entscheidung von Google, die in der vorhandenen chrome.webRequest- API vorhandenen Blockierungsfunktionen einzuschränken (und die API auf Beobachtung statt Blockierung zu konzentrieren) und diese dann zu blockieren Fähigkeiten durch eine neue chrome.declarativeNetRequest API. Diese spezielle Änderung hat die Community in Aufruhr versetzt, da sie letztendlich auf den Werbeblockierungsmechanismus der berühmten Werbeblockierungserweiterung uBlock Origin abzielt und sich direkt auf die über 10 Millionen Nutzer auswirkt.

Bevor wir uns mit diesem Problem befassen, werfen wir einen Blick darauf, wie die webRequest- API mit der deklarativen NetRequest- API verglichen wird.

Web Request API und Declarative Net Request API

Das Geschenk

Die offizielle Beschreibung von Web Request beschreibt die API wie folgt:

 Verwenden Sie die chrome.webRequest API, um den chrome.webRequest zu beobachten und zu analysieren und chrome.webRequest des chrome.webRequest abzufangen, zu blockieren oder zu ändern. 

Mit Web Request sendet Chrome alle Daten in einer Netzwerkanforderung an die Nebenstelle, die darauf wartet. Die Erweiterung hat dann die Möglichkeit, die Anfrage zu bewerten und Chrome anzuweisen, was mit der Anfrage zu tun ist: Zulassen, Blockieren oder Senden mit einigen Änderungen.

Folgen Sie der Ereignissequenz, um zu verstehen, was passiert, wenn Erweiterungen die Webanforderungs-API verwenden. Wenn ein Nutzer mit einer installierten Webanforderungserweiterung auf einen Link klickt, informiert Chrome die Erweiterung darüber, dass eine Datenanforderung erfolgt ist, bevor die Anforderung den Server erreicht. Die Erweiterung kann wählen, ob die Anforderung zu diesem Zeitpunkt geändert werden soll. Der Server antwortet dann, aber die Antwort durchläuft erneut die Erweiterung und die Erweiterung kann vorgeben, ob die Antwort geändert werden muss. Anschließend rendert Chrome die Seite und der Nutzer kann das Ergebnis seiner Klickaktion anzeigen.

Da Chrome alle Daten in einer Netzwerkanforderung übergibt, können Erweiterungen, die die Webanforderungs-API verwenden, alle Aktionen eines Nutzers im Web lesen und ändern. Während Content-Blocker wie uBlock Origin das Potenzial dieser API sinnvoll nutzen, behauptet Google, dass andere Erweiterungen mit böswilligen Absichten dies missbraucht haben, um Zugriff auf die persönlichen Daten der Benutzer zu erhalten. Laut Google haben 42% der böswilligen Erweiterungen seit Januar 2018 das Web Request API verwendet. Google behauptet auch, dass mit dem API „erhebliche Leistungskosten“ verbunden sind, da die blockierende Version davon einen beständigen und oft langwierigen Prozess erfordert, der ist grundsätzlich nicht kompatibel mit "faulen" Prozessen.

Mit Manifest V3 schlägt Google vor, diese API in ihrer Sperrform einzuschränken. Alternativ stellt Google die Declarative Net Request API zur Verfügung.

Die Zukunft

Die offizielle Beschreibung von Declarative Net Request beschreibt die API wie folgt:

 Die chrome.declarativeNetRequest API wird verwendet, um Netzwerkanforderungen durch Angabe deklarativer Regeln zu blockieren oder zu ändern. 

Mit Declarative Net Request muss Chrome nicht alle Informationen zu einer Anfrage an die Listening-Erweiterung senden. Stattdessen registriert die Erweiterung Regeln in Chrome, die dem Browser vorab mitteilen, was zu tun ist, wenn bestimmte Arten von Anforderungen angezeigt werden.

Die Erweiterung legt ihre Regeln im Voraus fest. Die Benutzeranforderung wird dann vom Browser (und nicht von der Erweiterung) mit dieser Regel abgeglichen, und die Aktion wird auch vom Browser ausgeführt, und die Seite wird anschließend gerendert. Google weist darauf hin, dass sie auf diese Weise die Effizienz sicherstellen können, da sie den das Ergebnis bestimmenden Algorithmus steuern und ineffiziente Regeln verhindern oder deaktivieren können. Es bietet dem Endbenutzer auch bessere Datenschutzgarantien, da Details der Netzwerkanforderung von der Erweiterung nicht betroffen sind. Da persistente und lang andauernde Prozesse nicht mehr erforderlich sind (da die Regeln vorab registriert wurden), behauptet Google, dass dieser Ansatz auch Leistungsverbesserungen mit sich bringt, die Erweiterungen auf ressourcenbeschränkten Plattformen erheblich rentabler machen.

Deklarative Netzwerkanforderungen sind sowohl für Manifest V2 (aktuell) als auch für Manifest V3 verfügbar. In erster Linie ermöglicht Google jedoch, dass Netzwerkanforderungen in Manifest V3 geändert werden.

Die Kontroverse

Die Änderungen von Google erscheinen sinnvoll, bis Sie die andere Seite der Geschichte hören, hauptsächlich die der Werbeblocker. Diese spezielle API-Migration wird als eine Möglichkeit von Google angesehen, Werbeblocker zu eliminieren, da sie die Funktionsweise eines der beliebtesten Werbeblocker grundlegend verändert. Dies knüpft an die „Theorie“ an, dass Google eher aus geschäftlicher Sicht als aus Sicht der Benutzersicherheit zu dieser Änderung motiviert ist. Schließlich ist Google in hohem Maße auf Werbung für seine Einnahmen angewiesen, und Werbeblocker werden in dieser Hinsicht als direkte Bedrohung für Googles Kunden angesehen, wie aus der Einreichung des SEC-Formulars 10-K (über The Register ) für 2018 von Alphabet hervorgeht:

Neue und vorhandene Technologien können sich auf unsere Fähigkeit auswirken, Anzeigen anzupassen und / oder Online-Anzeigen zu blockieren, was unserem Geschäft schaden würde.

Es wurden Technologien entwickelt, um anpassbare Anzeigen zu erschweren oder die Anzeige von Anzeigen insgesamt zu blockieren, und einige Anbieter von Onlinediensten haben Technologien integriert, die die Kernfunktionalität digitaler Werbung von Drittanbietern möglicherweise beeinträchtigen könnten. Der größte Teil unserer Google-Einnahmen stammt aus Gebühren, die im Zusammenhang mit der Schaltung von Online-Anzeigen an uns gezahlt wurden. Infolgedessen könnten solche Technologien und Tools unsere Betriebsergebnisse beeinträchtigen.

Google musste eine Erklärung veröffentlichen, um dies zu beheben, und seine Haltung bekräftigen, dass die Änderung im Interesse der Privatsphäre der Nutzer und nicht eines direkten Angriffs auf Werbeblocker ist:

Wir hindern weder die Entwicklung von Werbeblockern noch Benutzer daran, Anzeigen zu blockieren. Stattdessen möchten wir Entwicklern, einschließlich Inhaltsblockern, helfen, Erweiterungen so zu schreiben, dass die Privatsphäre der Benutzer geschützt wird.

Es muss auf zwei der beliebtesten Werbeblocker in Google Chrome verwiesen werden: uBlock Origin und Adblock Plus, die beide unterschiedliche Ansätze verfolgen, um das gleiche Ergebnis der Inhaltsblockierung zu erzielen. uBlock Origin stützt sich stark auf die Webanforderungs-API, und die Community hat diese Erweiterung im Laufe der Jahre bevorzugt. Adblock Plus und andere Inhaltsblockierungserweiterungen sind ebenfalls auf den blockierenden Teil von Web Request angewiesen, sodass Änderungen an dieser API die meisten Inhaltsblocker zumindest in gewisser Kapazität betreffen.

Googles Bestreben, Web-Anfragen zu verwerfen, führt im Wesentlichen dazu, dass uBlock Origin in seinem aktuellen Format nicht mehr verwendet wird, was in der Tat viele Benutzer betrifft. Während Benutzer ohne Loyalität (und ohne die Absicht, sich mit dem Erreichen des Anzeigenblocks zu beschäftigen) alternative Lösungen finden, die ihre eigenen Nachteile haben, wird es für Loyalisten und Enthusiasten unmöglich, neue Filtermaschinendesigns zu finden, um die zu umgehen Verschiedene Techniken, die Websites irgendwann entwickeln werden, um Werbeblocker auf dieser spezifischen API zu bekämpfen.

Declarative Net Request wurde auch als eher begrenzte Filter-Engine vorgeschlagen, da ursprünglich eine Beschränkung von 30.000 Regeln für statische Filterregeln pro Erweiterung vorgesehen war (Regeln, die während der Installation deklariert werden). und 5.000 Regelbegrenzungen für dynamische Filterregeln pro Erweiterung (Regeln, die nach der Installation hinzugefügt werden können). Alle überzähligen Regeln werden ignoriert, was ein kleines Problem darstellt, da EasyList für Adblock Plus selbst 70.000 Regeln enthält, während uBlock Origin so konfiguriert werden kann, dass es mit über 100.000 Regeln ausgeführt wird. Nach der ersten Reaktion der Community versprach Google, das statische Regellimit von 30.000 Regeln pro Erweiterung auf ein globales Maximum von 150.000 Regeln zu ändern. Dies hat dann den Nebeneffekt, dass Benutzer keine anderen regelintensiven Skripte in Verbindung mit einem Werbeblocker verwenden können, sodass Benutzer mit ihren Einstellungen herumspielen müssen.

Abgesehen von dem begrenzten Filterungslimit kann Declarative Net Request nur zu statischen URLs umleiten, sodass der Mustervergleich nicht unterstützt wird. uBlock Origin stützt sich in hohem Maße auf den Mustervergleich, und der Erweiterungsentwickler gab an, dass es nicht möglich ist, den Übereinstimmungsalgorithmus seiner Erweiterung nachzurüsten, um die API-Anforderungen zu erfüllen. Die API würde auch ein vollständiges Erweiterungsupdate erfordern, um einfach die Filterliste zu aktualisieren. Dies wäre angesichts der Häufigkeit, mit der diese Filterlisten aktualisiert werden, eine viel zu häufige Aktivität. Natürlich hängen diese Updates auch von den Kriterien und Prozessen der Google-Erweiterungsüberprüfung ab.

Auf der anderen Seite hat Google immer die Ansicht vertreten, dass seine Absicht, sich von Web Request zu entfernen, aus Sicherheitsgründen besteht, da die Web Request-API in ihrer aktuellen Form zu leistungsfähig ist und einen sehr großen Raum für Missbrauch offen lässt. Dieser Missbrauch ist nicht nur theoretisch, da Google erwähnt hat, dass 42% der böswilligen Erweiterungen diese API missbraucht haben. Die Content Blocker API von Apple Safari wurde aus ähnlichen Gründen wie Declarative Net Request entwickelt, da ein betrügerischer Entwickler weniger Spielraum für die Nutzung hat. Auf der neu definierten Webanforderung können Netzwerkanforderungen weiterhin beobachtet werden, sie benötigen jedoch Berechtigungen für die entsprechenden Hosts. Mit Manifest V3 ändern sich auch die Hostberechtigungen erheblich und können bei der Installation nicht mehr pauschal erteilt werden.

Google hat auch Leistungsgemeinkosten als Motivator für den Wechsel verwendet. Die Auswertung von Netzwerkanforderungen erfolgt im JavaScript-Thread der Erweiterung, was für die Leistung kostspielig sein kann. Als Gegenargument erwähnt der Entwickler von uBlock Origin, dass seine Erweiterung selbst bei 140.000 zu erzwingenden statischen Filtern keine nennenswerten Leistungseinbußen mit sich bringt. Es wird behauptet, dass die angefallenen Kosten durch die Ressourcen, die nicht von Remote-Servern heruntergeladen und somit vom Browser nicht verarbeitet werden können, leicht wieder hergestellt werden können.

Auch wenn Google diese Argumentation nicht verwendet, kann ein Argument gegen Web Request auch aus Gründen der Effizienz beim Blockieren von Anzeigen vorgebracht werden. Wenn eine Erweiterung bei Web Request nicht rechtzeitig reagiert (aufgrund einer Verzögerung oder eines Absturzes), ist die Anforderung zur Netzwerkverarbeitung eindeutig zulässig, sodass Anzeigen durch den Werbeblocker geleitet werden. Declarative Net Request würde dagegen nicht unter diesem Nachteil leiden. Stattdessen werden Anzeigen weitergeleitet, wenn sie nicht von den statischen Regeln erfasst werden, und dies geschieht meistens.

Fazit

Aus den obigen Erläuterungen geht klar hervor, dass Declarative Net Request kein 1: 1-Funktionsklon für die Blockierungsfunktionen der Web Request-API ist, und Erweiterungsentwickler müssen sich ärgern, wenn ihre harte Arbeit durch solche Änderungen behindert wird. Die Argumentation von Google hat jedoch auch Gewicht: Web Request ist zu leistungsfähig und muss eingeschränkt werden, um das Interesse der Benutzergemeinschaft (die aus durchschnittlichen Benutzern und Enthusiasten besteht) zu steigern.

Der Schritt in Richtung Declarative Net Request könnte auch ein positiver PR-Schritt gewesen sein - schließlich fügt Google Chrome eine integrierte Content-Blocker-API hinzu! Da die neue API jedoch mit erheblichen Einschränkungen verbunden ist, sieht die Community dies zu Recht als einen Ausschnitt ihrer Flügel. In einer idealen Welt hätte Google die Funktionsweise von Werbeblockern wie uBlock Origin untersuchen sollen, bevor die neue API veröffentlicht wurde. Gegenwärtig könnte die neue API weitere Lockerungen ihrer Regelgrenzen vornehmen, um Szenarien zu berücksichtigen, in denen Benutzer zwei filterlastige Erweiterungen verwenden möchten.

Laut The Register werden die ersten Builds mit Manifest V3-Änderungen ab Juli 2019 verfügbar sein. Wir hoffen, dass Google das Feedback der Entwickler-Community für Erweiterungen mit diesen Builds berücksichtigt.


Besonderer Dank geht an Chefredakteur Mishaal Rahman für seine Beiträge und Unterstützung!

Bearbeiten: Der Artikel hat die Funktionsweise von Adblock Plus fälschlicherweise mit der von Declarative Net Request API gleichgesetzt. Der Artikel wurde entsprechend geändert. Adblock Plus wird auch von der Aufhebung der Blockierungsfunktionen der Web Request API betroffen sein.