2 Punkte von GN⁺ 2023-08-15 | 1 Kommentare | Auf WhatsApp teilen
  • Little Rat ist eine kleine Chrome-Erweiterung, die die Netzwerkaufrufe anderer Chrome-Erweiterungen überwacht und optional blockiert
  • Das Erkennen und Blockieren des Datenverkehrs anderer Erweiterungen ist nur möglich, wenn das Flag extensions-on-chrome-urls unter chrome://flags/#extensions-on-chrome-urls aktiviert wird oder Chrome mit --extensions-on-chrome-urls gestartet wird
  • Die manuelle Installation erfolgt über das Herunterladen der GitHub-ZIP-Datei, das Entpacken, das Aktivieren des Developer mode in Chromium/Chrome Extensions und das Laden der entpackten Erweiterung aus dem Verzeichnis little-rat-main

1 Kommentare

 
GN⁺ 2023-08-15
Hacker-News-Kommentare
  • Ich würde mir das eher als Standardfunktion in Firefox oder Chrome wünschen als als Drittanbieter-Erweiterung. Dann wäre die Verbreitung groß genug, dass auch andere Browser darauf achten würden. Ich möchte bestimmten Erweiterungen nur GET-Requests an festgelegte statische URLs erlauben, ohne dass sie Header verändern können.
    So wären Datenupdates möglich, während das Risiko von Datenabflüssen geringer wäre. Manche Erweiterungen laufen ausschließlich lokal im Browser und brauchen überhaupt keinen Netzwerkzugriff. Wenn sie allerdings den Seitenquelltext verändern können, lässt sich die Datenübertragung umgehen; vermutlich machen Browser das deshalb nicht. Trotzdem halte ich es für besser, es zu versuchen, als aufzugeben und es Chrome-Erweiterungen zu überlassen.

    • Zumindest zur Beobachtung ist es möglich. Man muss nicht den Debugger für die aktuelle Seite öffnen, sondern den Debugger für den Browser.
      Man aktiviert Remote Debugging fast genauso wie bei der UI-Inspektion und startet dann die Browser Toolbox: https://superuser.com/questions/1608096/how-to-inspect-firef...
      Das ist auch nützlich, um herauszufinden, was man in der user-chrome-CSS-Datei braucht, wenn man die Tab-Darstellung stärker als nur per Theme anpassen will. Die Nutzung von user-chrome CSS selbst ist allerdings etwas lästig.
      Damit Netzwerk-Requests von Erweiterungen sichtbar werden, musste ich auf multi-process mode umstellen; im Großen und Ganzen ist das Verhalten nachvollziehbar.
      Zum Beispiel sieht man hier, wie uBlock eine beliebige Test-Blockliste abruft, die ich angeklickt habe: https://i.imgur.com/wBYbBM2.png
      Und hier aktualisiert Firefox selbst im Hintergrund die Safe-Browsing-Listen: https://i.imgur.com/JYxWwjW.png
    • Auch GET-Requests können Daten über Pfad- und Query-String-Parameter abfließen lassen. Selbst wenn man auch das verhindert, kann man über Zeitpunkt oder Häufigkeit eine Art Morsecode-Kommunikation bauen, die Aktivitäten andeutet; bei genügend vielen Requests lassen sich problemlos auch Daten im Megabyte-Bereich übertragen.
    • Wenn eine Erweiterung HTTP-Requests erzeugt, die über das bloße Wiederholen von URLs hinausgehen, die bereits auf der Seite vorhanden waren, sollte meiner Meinung nach eine Toast-Benachrichtigung angezeigt werden, die den Request-Body lesbar aufbereitet.
      Bei gut gemachten Erweiterungen würde die Benachrichtigung nur gelegentlich erscheinen, und bei Erweiterungen, die einen Server brauchen, würde sie zu dem Zeitpunkt erscheinen, an dem der Nutzer ohnehin Kommunikation mit dem Server erwartet. Erweiterungen, die Tastatureingaben oder verdächtige Daten senden, würden sehr leicht auffallen.
    • Soweit ich mich erinnere, können Erweiterungen nicht auf URLs zugreifen, die nicht im Berechtigungsabschnitt des Manifests angegeben sind. Firefox zeigt diese URLs meines Wissens im Berechtigungsdialog an.
      Allerdings kann man Wildcards in URLs verwenden, und ich meine, es gab auch einen Spezialwert für alle URLs. Trotzdem sollten nicht viele Erweiterungen solche Berechtigungen benötigen.
    • Der Grund, warum Browserhersteller so eine Funktion nicht anbieten, dürfte sein, dass sich jeder Schutzmechanismus leicht umgehen lässt.
      Selbst wenn eine Erweiterung selbst keine Requests erzeugen kann, gibt es etwa viele Möglichkeiten, mit der Berechtigung zum Ändern des DOM einer Webseite die Webseite dazu zu bringen, den Request stellvertretend zu senden.
  • Diese Erweiterung ist nicht ganz trivial zu installieren; es wäre daher gut, Screenshots hinzuzufügen, die tatsächlich erfasste Netzwerkereignisse zeigen. Der aktuelle Screenshot verdeckt die interessanteste Funktion.

    • Google Chrome öffnen, oben rechts das Drei-Punkte-Menü → Extensions → Manage Extensions → oben rechts den Schalter Developer Mode aktivieren → oben links auf „Load Packged“ klicken → das entpackte .zip-Verzeichnis laden.
      Danach zurück zum normalen Browserfenster, rechts neben der Adressleiste auf das Puzzle-Icon für Erweiterungen klicken und neben Little Rat auf das kleine Stecknadel-Icon klicken; dann ist es installiert und erscheint in der Liste der Erweiterungs-Icons.
  • Cool. Ehrlich gesagt überrascht es mich, dass das möglich ist.
    Ich weiß nicht genau, welche Daten diese APIs bereitstellen, aber wenn eine Erweiterung auf die Requests anderer Erweiterungen zugreifen kann, könnte das nicht Sicherheitsbedenken bei Passwortmanager-Erweiterungen oder Erweiterungen mit Authentifizierungs-Tokens aufwerfen?

  • Gut. So etwas fühlt sich an, als sollte es eine chrome://-URL dafür geben.

    • Da Erweiterungen aus Sicht von Sicherheit und Datenschutz ein so großes Risiko darstellen, war mein erster Gedanke: Warum ist das keine Standardfunktion in Chromium?
  • Sieht gut aus; mich würde interessieren, ob es Pläne für eine Portierung auf Firefox gibt.
    Kennt jemand eine Alternative, die dasselbe in Firefox erledigt?

  • Ich werde es ausprobieren, wenn es im Chrome Store ist.

    • Es verwendet declarativeNetRequest.onRuleMatchedDebug[0], und das wirkt wie nur für Debugging gedacht; daher frage ich mich, ob es im Chrome Web Store erlaubt sein wird.
      0: https://github.com/dnakov/little-rat/blob/f0b9b6be39af9fe7f4...
    • Gehe zu Releases, speichere die crx-Datei per Rechtsklick, gehe in Chrome zu Extensions und ziehe diese crx-Datei per Drag & Drop hinein.
  • Warum ist es nicht im Chrome Store?

    • Es befindet sich derzeit in Prüfung. Der Grund ist, dass es chrome.declarativeNetRequest verwendet; das ist eine API, die auch uBlock nutzt.
  • Sauber, aber diese Stelle sollte vorsichtiger behandelt werden: https://github.com/dnakov/little-rat/blob/main/popup.js#L36
    Ich möchte mir keine Sorgen machen müssen, ob eine andere Erweiterung hier per manipuliertem Request, ID oder Namen XSS einschleusen kann.

    • Sehr guter Hinweis, aber die Content Security Policy erlaubt kein unsafe-inline, und die Erweiterungs-ID wird von Chrome automatisch erzeugt.
  • Allein die Tatsache, dass es keine Netzwerkaufrufe gibt, beweist nicht, dass eine Erweiterung sicher ist. Sie könnte Daten, die privat bleiben sollen, cachen und später periodisch senden.