tarnish
tarnish ist ein statisches Analysewerkzeug, das Forscher bei Sicherheitsüberprüfungen von Chrome-Erweiterungen unterstützt. Es automatisiert viel der regulären Routinearbeit und hilft Ihnen, potenzielle Sicherheitslücken schnell zu identifizieren. Dieses Tool begleitet den Forschungsblogbeitrag, der hier zu finden ist. Wenn Sie den Aufwand der Einrichtung vermeiden möchten, können Sie das Tool einfach unter https://thehackerblog.com/tarnish/ nutzen.

Hinweis zu unfertigem Zustand & Anmerkungen
Es sei darauf hingewiesen, dass es sich um eine unfertige Veröffentlichung handelt. Dies ist dieselbe Quelle wie die Bereitstellung unter https://thehackerblog.com/tarnish/. In Zukunft könnte ich dies bereinigen und die Ausführung erheblich erleichtern, aber im Moment habe ich keine Zeit dazu.
Um dies einzurichten, müssen Sie verstehen, wie man:
- Ein S3-Bucket konfigurieren
- (bei Verwendung von Auto-Scaling) ElasticBeanstalk einrichten
docker-compose verwenden
- redis einrichten
Die Einrichtung ist aufgrund einiger Designziele etwas komplex:
- Effektive statische Analyse von Chrome-Erweiterungen durchführen
- Automatisch bei erhöhter Arbeitslast mit mehr Instanzen hochskalieren und wieder herunterskalieren.
- Mit einem schmalen Budget arbeiten (daher die Nutzung von ElasticBeanstalk mit Spot-Instanzen).
Einige kurze Hinweise, um jemandem bei der Einrichtung zu helfen:
tarnish verwendet Python Celery zur Analyse von Erweiterungen.
- Die Python-Celery-Konfiguration verwendet redis als Broker (dieser muss erstellt werden).
- Die Worker, die die Analyseaufträge für Erweiterungen verarbeiten, laufen auf AWS ElasticBeanstalk Spot-Instanzen. Für diejenigen, die damit nicht vertraut sind: Spot-Instanzen sind im Grunde Gebote auf ungenutzte Rechenleistung. Dies ermöglicht einen extrem günstigen Betrieb des Dienstes.
- Die Worker benötigen zum Betrieb mindestens eine AWS
t2.medium-Instanz.
- Das
tarnish-Frontend besteht lediglich aus einer Reihe statischer Dateien, die in einen für statische Webhosting konfigurierten S3-Bucket hochgeladen werden.
Siehe die docker-compose.yaml.example für die Konfiguration der Umgebungsvariablen. Idealerweise führen Sie ./start.sh aus und navigieren zum statischen Frontend, um alles zum Laufen zu bringen. Sie können S3 für die statische Website oder einen einfachen statischen Webserver wie python -m SimpleHTTPServer verwenden (Sie müssen die JavaScript-Dateien anpassen, um sicherzustellen, dass der Ursprung übereinstimmt usw.).
Funktionen
Lädt jede Chrome-Erweiterung von einem bereitgestellten Chrome Webstore-Link herunter.
manifest.json-Anzeige: zeigt einfach eine JSON-verschönerte Version des Manifests der Erweiterung an.
- Fingerabdruck-Analyse: Erkennung von
web_accessible_resources und automatische Generierung von JavaScript zum Fingerprinting von Chrome-Erweiterungen.
- Potenzielle Clickjacking-Analyse: Erkennung von HTML-Seiten der Erweiterung, bei denen die
web_accessible_resources-Direktive gesetzt ist. Diese sind je nach Zweck der Seiten potenziell anfällig für Clickjacking.
- Anzeige der Berechtigungswarnungen: zeigt eine Liste aller Berechtigungshinweise von Chrome, die angezeigt werden, wenn ein Benutzer versucht, die Erweiterung zu installieren.
- Gefährliche Funktionen: zeigt die Position gefährlicher Funktionen, die potenziell von einem Angreifer ausgenutzt werden könnten (z. B. Funktionen wie innerHTML, chrome.tabs.executeScript).
- Einstiegspunkte: zeigt, wo die Erweiterung Benutzer-/externe Eingaben entgegennimmt. Dies ist nützlich, um die Angriffsfläche einer Erweiterung zu verstehen und nach potenziellen Punkten zu suchen, an denen bösartig präparierte Daten an die Erweiterung gesendet werden können.
- Sowohl die Scanner für gefährliche Funktionen als auch für Einstiegspunkte enthalten Folgendes für ihre generierten Warnungen:
- Relevantes Code-Snippet und Zeile, die die Warnung ausgelöst hat.
- Beschreibung des Problems.
- Eine Schaltfläche „Datei anzeigen“, um die vollständige Quelldatei mit dem Code anzuzeigen.
- Der Pfad der Datei, die die Warnung ausgelöst hat.
- Die vollständige Chrome-Erweiterungs-URI der Datei, die die Warnung ausgelöst hat.
- Der Dateityp, z. B. Hintergrundseiten-Skript, Content Script, Browser Action usw.
- Wenn die verwundbare Zeile in einer JavaScript-Datei steht, die Pfade aller Seiten, in denen sie eingebunden ist, sowie der Typ dieser Seiten und der
web_accessible_resource-Status.
- Content Security Policy (CSP)-Analyzer und Bypass-Prüfer: Dieser zeigt Schwachstellen in der CSP Ihrer Erweiterung auf und beleuchtet auch mögliche Wege, Ihre CSP aufgrund von freigegebenen CDNs usw. zu umgehen.