Wie Bromure Werbung blockiert, bevor die Seite sie überhaupt zu sehen bekommt
Die meisten Werbeblocker sind Browser-Erweiterungen, und die meisten Browser-Erweiterungen laufen im selben Prozess wie die Seite, vor der sie Sie schützen sollen. Bromure macht es anders. Hier erfahren Sie, wie – und warum das einen Unterschied macht.
Ein Werbeblocker, der im Browser lebt, will einen Kampf schlichten, während er selbst im Ring steht. Bromure verlegt den Schiedsrichter ins Netzwerk – dorthin, wo keine Seite ihn erreicht, kein Skript ihn berühren und kein „Anti-Adblock”-Banner mit ihm diskutieren kann.
Die Werbeblockierung ist das mit Abstand beliebteste Browser-Feature, das im Browser selbst nicht enthalten ist. Hunderte Millionen Menschen installieren am ersten Tag eine Erweiterung eines Drittanbieters, weil das heutige Web ohne eine solche schlicht unbenutzbar ist. Das allein ist schon ein schlechtes Zeichen im Design. Aber die Art, wie fast jeder Werbeblocker arbeitet, verdient Beachtung, denn die Architektur ist entscheidend – sowohl dafür, wie gut er funktioniert, als auch dafür, was passiert, wenn die Seite sich aktiv dagegen wehrt.
Dieser Beitrag erklärt, wie ein Werbeblocker üblicherweise arbeitet, warum diese Bauart echte Grenzen hat und wie Bromure einen anderen Weg geht – einen, der seine Kernidee von einem Werkzeug übernimmt, das Sie vielleicht von einem Raspberry Pi in irgendjemandes Keller kennen.
Werbung ist nicht nur lästig. Sie ist ein Ladeproblem, ein Datenschutzproblem und ein Angriffsvektor.
Nach ein paar Jahren mit Werbeblockierung vergisst man leicht, wie das rohe Web eigentlich aussieht. Ein beliebter Nachrichtenartikel, ohne jede Filterung geladen, holt sich typischerweise Ressourcen von 30 bis 80 Drittanbieter-Domains. Die meisten davon sind Analytics, Tracking-Pixel und Echtzeit-Bidding-Endpunkte. Sie machen die Seite schwerer, verlangsamen sie, setzen Cookies im Auftrag von Firmen, von denen Sie noch nie gehört haben, und – wie im Ransomware-Beitrag von Anfang dieses Monats erläutert – sie sind eines der stillen Verbreitungsmittel für Schadsoftware, weil Werbenetzwerke gelegentlich dazu gebracht werden, bösartige Kreative auf seriösen Seiten auszuliefern.
Das Blockieren dieser Anfragen ist also kein kosmetisches Problem. Es ist ein Gewinn an Leistung, ein Gewinn an Privatsphäre und – weil Werbenetzwerke ein regelmäßiger Verbreitungskanal für Schadsoftware sind – ein echter Sicherheitsgewinn. Die einzige Frage ist, wie Sie sie blockieren.
Wie eine typische Browser-Erweiterung Werbung blockiert.
Fast jeder gängige Werbeblocker, darunter die verbreiteten, die Sie
wahrscheinlich installiert haben, ist eine Browser-Erweiterung. Das
bedeutet architektonisch: Sie lebt im Browser – sie führt
JavaScript innerhalb des Browser-Prozesses aus, registriert
Callbacks bei den Netzwerk-APIs des Browsers (webRequest,
declarativeNetRequest) und prüft jede Anfrage, die der Browser im
Begriff ist abzusetzen.
Diese Bauart funktioniert – schließlich ist sie das, worauf sich die meisten Menschen täglich verlassen –, aber sie hat echte strukturelle Grenzen:
Die Seite merkt es
Da die Erweiterung im selben Prozess wie die Seite lebt, kann das JavaScript der Seite sie abfragen: „Ist meine Anfrage tatsächlich rausgegangen? Ist diese Variable am Ende definiert?” Ganze Seiten (und die meisten Nachrichtenportale mit Bezahlschranke) erkennen fehlende Anfragen, verweigern das Laden ohne sie und fordern die Nutzer auf, „ihren Werbeblocker zu deaktivieren”.
Die Seite liegt in derselben Vertrauenszone
Die Erweiterung und die feindselige Seite, die sie filtern soll, teilen sich einen Browser-Prozess, einen Renderer, manchmal auch einen Satz Berechtigungen. Ein hinreichend gefährlicher Browser-Exploit in der Seite schaltet die Erweiterung gleich mit aus. Erweiterungen sind Code; sie sind auch Angriffsfläche.
Die Anfrage ist schon auf der Welt
Wenn die Erweiterung eine Anfrage zu Gesicht bekommt, hat der Browser bereits entschieden, sie abzusetzen, die URL geparst und (je nach API) den DNS-Lookup durchgeführt. An diesem Punkt zu blockieren ist Filtern, nicht Verhindern.
Die Filter-API wird immer schwächer
Die Manifest-v3-Umstellung von Chrome hat eingeschränkt, was
Filter-Erweiterungen tun können – vor allem durch Deckelung der
Regelanzahl und durch den Ersatz des dynamischen webRequest
durch declarativeNetRequest. Die Architektur der
Erweiterungs-API gibt der Browser-Hersteller vor, nicht Sie.
Wie Bromure es macht: Die Wand ist nicht die Erweiterung.
Der Werbeblocker von Bromure ist keine Erweiterung. Der Browser selbst enthält überhaupt keinen Werbeblocker-Code. Stattdessen ist der Netzwerk-Stack der wegwerfbaren Linux-VM, in der der Browser läuft, der Werbeblocker – und aus Sicht des Browsers lassen sich die Werbe-Domains schlicht nicht auflösen.
Mechanisch erledigen zwei kleine, unaufgeregte Softwarestücke die Arbeit:
Ein lokaler HTTP-Proxy (Squid)
Jede ausgehende Anfrage des Browsers wird transparent über einen
Squid-Proxy geleitet, der innerhalb der VM auf localhost:3128
läuft. Squid ist die Rohrleitung: Er entscheidet nicht, was
Werbung ist, er erledigt lediglich die DNS-Auflösung und das
Weiterleiten für den Browser.
Ein lokaler DNS-Resolver (dnsmasq)
Squid ist angewiesen, jede Domain über eine lokale
dnsmasq-Instanz auf 127.0.0.1 aufzulösen. Die Konfiguration
von dnsmasq enthält eine Sperrliste von rund 100.000 Domains –
Werbenetzwerke, Tracker, Analytics, bekannte bösartige Hosts.
Alles auf der Liste wird auf 0.0.0.0 aufgelöst, was ins Leere
führt.
Das Ergebnis ist ein Netzwerk, das aus Sicht des Browsers
internet-förmig ist, nur dass Werbe- und Tracking-Domains überhaupt
keine DNS-Einträge haben. Der Browser fragt nach doubleclick.net,
bekommt „keine Route” zurück und macht weiter. Es wird keine
Verbindung aufgebaut. Es wird kein TLS-Handshake versucht. Kein
Cookie geht irgendwohin, weil es kein „Irgendwohin” gibt, an das
man es schicken könnte.
Dieselbe Idee, die seit Jahren in Kellern läuft.
Wer schon einmal pi-hole eingerichtet hat – das kleine DNS-Sinkhole, das viele Menschen auf einem Raspberry Pi laufen lassen, um Werbung aus ihrem gesamten Heimnetzwerk zu filtern –, wird die Bromure-Architektur ausgesprochen vertraut finden. Die zugrunde liegende Sperrliste ist Steven Blacks vereinheitlichte Hosts-Datei, dieselbe, mit der diese Heim-Installationen seit Jahren laufen. Der konzeptionelle Schritt ist identisch: Versuchen Sie nicht, Werbung aus der Seite zu entfernen, sondern verweigern Sie dem Browser schlicht die Auskunft, wie der Werbeserver überhaupt zu finden ist.
Der entscheidende Unterschied liegt darin, wo das Sinkhole lebt. Ein haushaltsweites Sinkhole schützt jedes Gerät im Heimnetzwerk; ein Bromure-Sinkhole schützt genau ein Browser-Profil. Schalten Sie es für das Profil ein, mit dem Sie Nachrichten lesen; lassen Sie es für das Profil aus, in dem Ihre Bank Sie lieber nicht durch ungewöhnliche Middleware leiten soll.
Was Ihnen das tatsächlich bringt.
Die praktischen Vorteile summieren sich:
Lässt sich nicht durch eine kompromittierte Seite abschalten
Die Sperrliste ist kein Code, den der Browser lädt; sie ist das Netzwerk des Browsers. Ein Renderer-Exploit, ein feindseliges Skript, eine sich fehlverhaltende Drittanbieter-Bibliothek – keines davon erreicht die dnsmasq-Konfiguration, denn keines davon kann aus dem Browser-Prozess hinaus an den Netzwerk-Stack der VM gelangen.
Seiten können nicht daran vorbeischauen
Das JavaScript der Seite kann den ganzen Tag navigator-Attribute
prüfen; es kann die DNS-Konfiguration des Netzwerks, in dem es
sich befindet, nicht einsehen, denn das ist kein Wissen, das
JavaScript zusteht. Aus Sicht der Seite sieht eine blockierte
Werbung genauso aus wie eine Werbe-Domain, die gerade eine Minute
lang ausgefallen ist.
Keine Angriffsfläche durch Erweiterungen
Werbeblocker-Erweiterungen wurden mehr als einmal kompromittiert – entweder über den Extension-Store, über eine Übernahme oder über ein bösartiges Update. In Bromure gibt es keine solche Erweiterung, die kompromittiert werden könnte, denn es gibt keine Erweiterung.
Pro Profil, umschaltbar wie jede andere Fähigkeit
Die Werbeblockierung ist eine Profileinstellung („Werbung blockieren” in Privatsphäre & Sicherheit), standardmäßig aus und in jedem Profil Ihrer Wahl einschaltbar. Ihr Banking-Profil bleibt ungefiltert; Ihr tägliches Leseprofil ist sauber.
Die ehrlichen Grenzen.
In diesem Feld gibt es nichts umsonst. Ein paar Dinge, die der Ansatz auf Netzwerkebene bewusst nicht leistet und die Sie von vornherein kennen sollten:
Keine kosmetische Filterung
Eine klassische Erweiterung kann den leeren Kasten ausblenden, wo früher ein Banner war. Bromure schreibt die Seite nicht um. Hat der Verlag also einen 728×90-Block reserviert, bleibt der Block leer an seiner Stelle. Das ist auf einigen wenigen Seiten eine kleine optische Unschönheit, und der Gegenwert ist, dass auf der Seite nichts ist, was ein Skript bemerken könnte.
First-Party-Werbung überlebt
Wenn eine Seite ihre eigene Werbung aus ihrer eigenen Domain ausliefert (wie es einige große Tech-Plattformen mittlerweile tun), kann die Blockierung auf Domain-Ebene nicht zwischen „Artikel” und „Werbung” unterscheiden – beide liegen unter demselben Hostnamen. Das ist eine echte Lücke; die Antwort darauf – dort, wo es wichtig ist – wäre eine zusätzliche Content-Skript-Ebene, und daran arbeiten wir.
Anti-Adblock-Wände erkennen weiterhin Abwesenheit
Manche Seiten müssen den Werbeblocker gar nicht finden. Sie prüfen einfach, ob ein bestimmtes Skript geladen wurde, und verweigern den Artikel, falls nicht. Für diese Seiten wird jeder Blocker – ob Erweiterung oder Netzwerk – aufgedeckt. Das ist eine Auseinandersetzung über die Regeln mit dem Verlag, keine technische mit dem Blocker.
Die Sperrliste wird mit Bromure ausgeliefert
Die gravity.list wird zum Zeitpunkt des Image-Builds
eingebacken und aktualisiert sich, wenn Sie Bromure
aktualisieren. Sie zieht sich nicht, wie es ein dediziertes
Dauer-Sinkhole zu Hause kann, jede Stunde die neuesten Regeln.
Für eine Liste, die auf Hostnamen basiert, ist das meist in
Ordnung – Werbe-Domains wechseln nicht so schnell wie etwa
Malware-Domains –, aber es ist gut, das zu wissen.
Die Form der Sache.
Der größere Punkt ist nicht, dass der Werbeblocker von Bromure auf magische Weise besser Regeln abgleichen würde als uBlock Origin. Tatsächlich ist die Regel-Engine von uBlock ausgefeilter. Der Punkt ist, wo blockiert wird. Eine Erweiterung ist ein höflicher Schiedsrichter, der den Browser bittet, dieses Ding doch bitte nicht zu laden. Bromure ist die Straße, auf der die Anfrage unterwegs gewesen wäre – still an der Autobahnauffahrt gesperrt, bevor sich der Fahrer überhaupt ins Auto setzt.
Werbeblockierung in einer versiegelten VM ist kein neues Feature von Bromure; sie ist eine Folge der Architektur, die vom ersten Tag an da war. Die Netzwerkschicht jedes Profils ist ihre eigene kleine Welt. In dieser Welt kann WARP stecken. Sie kann ein bezahltes VPN enthalten. Sie kann einen Tor-Transport haben. Und sie kann, gratis, dasselbe DNS-Sinkhole enthalten, das seit Jahren leise Werbung in den Kellern der Leute filtert – installiert, konfiguriert und genau auf die Browser-Sitzung zugeschnitten, in der Sie es haben wollen.
Wenn Sie die lange Fassung wünschen: Die Sperrliste ist eine reine Textdatei, die innerhalb des VM-Images ausgeliefert wird – Sie können sie beim nächsten Release direkt einsehen und jede einzelne der hunderttausend Domains lesen, die für Ihren Browser still aufhören zu existieren. Wenn Sie nur die kurze Fassung wollen: Öffnen Sie Privatsphäre & Sicherheit in einem beliebigen Bromure-Profil und legen Sie den Schalter „Werbung blockieren” um. Die Straße ist bereits gesperrt. Sie müssen nur noch fahren.