Lieferkette
Was ist Typosquatting?
Typosquatting ist ein Angriff, bei dem ein Name registriert wird, der einem beliebten Namen ähnelt, um dann darauf zu warten, dass sich jemand vertippt. Er begann mit Website-Domains. In der Softwarewelt veröffentlichen Angreifer bösartige Pakete mit Namen wie crossenv statt cross-env, und ein einziger Tippfehler in einem Installationsbefehl führt ihren Code auf dem Rechner eines Entwicklers oder in einer CI-Pipeline aus.
Aktualisiert am
So funktioniert Paket-Typosquatting
- Ein Ziel wählen. Der Angreifer wählt ein beliebtes Paket, bei dem sich selbst eine kleine Tippfehlerquote summiert.
- Einen ähnlichen Namen registrieren. Er unterscheidet sich durch einen Buchstaben, einen fehlenden Bindestrich, ein vertauschtes Zeichen oder ein plausibles Suffix.
- Den Schadcode verstecken. Das Paket kapselt oft das echte, sodass alles weiter funktioniert und nichts verdächtig wirkt.
- Bei der Installation ausführen. Paketmanager können während der Installation Skripte ausführen, sodass der Code läuft, bevor ihn jemand aufruft, mit Zugriff auf Umgebungsvariablen und Tokens.
- Stehlen und verbreiten. Mit gestohlenen Zugangsdaten kann der Angreifer weitere Pakete veröffentlichen oder weitere Systeme erreichen.
Gängige Typosquatting-Techniken
| Technik | Echtes Paket | Doppelgänger |
|---|---|---|
| Fehlendes Trennzeichen | cross-env |
crossenv |
| Hinzugefügtes Suffix | jquery |
jquery.js |
| Vertauschte Buchstaben | ffmpeg |
ffmepg |
| Ausgelassener Buchstabe | mongoose |
mongose |
| Hinzugefügtes Präfix | sqlite |
node-sqlite |
Alle oben genannten Doppelgänger stammen aus einer einzigen realen Kampagne, die im Folgenden beschrieben wird.
Ein reales Beispiel: crossenv
2017 veröffentlichte ein npm-Nutzer namens hacktask das Paket crossenv, das das beliebte
cross-env imitierte. Es behielt das Verhalten des echten Pakets bei und sendete zusätzlich die Umgebungsvariablen aller, die es
installierten, an den Server des Angreifers. In einem Build liegen in den Umgebungsvariablen die Tokens.
Die Analyse von Snyk ergab, dass es eines von mehr als
30 bösartigen Paketen desselben Kontos war und etwa zwei Wochen unbemerkt blieb, bis es einem Entwickler auffiel.
Warum KI-Coding-Assistenten das Problem verschärfen
Ein KI-Assistent kann ein Paket vorschlagen, das es gar nicht gibt. Registriert ein Angreifer diesen Namen, installiert die nächste Person, die den Vorschlag annimmt, die Malware. Das wird manchmal Slopsquatting genannt. Automatisierte Agenten, die Abhängigkeiten installieren, ohne dass ein Mensch den Namen liest, erhöhen das Risiko weiter.
Typosquatting vs. Dependency Confusion
Beide nutzen aus, wie Paketnamen aufgelöst werden, aber der Fehler ist ein anderer.
| Typosquatting | Dependency Confusion | |
|---|---|---|
| Wessen Fehler | Eine Person vertippt sich bei einem Namen | Ein Build-System wählt die falsche Registry |
| Der Name | Ähnlich wie ein öffentliches Paket | Identisch mit einem privaten, internen Paket |
| Wie es gelingt | Jemand installiert es versehentlich | Eine öffentliche Version mit höherer Nummer hat Vorrang |
| Wichtigster Schutz | Lockfiles und die Prüfung neuer Abhängigkeiten | Pakete mit Scope und eine Registry-Konfiguration, die interne Namen privat hält |
Bekannt wurde Dependency Confusion 2021, als der Forscher Alex Birsan damit Code in mehr als 35 Organisationen zur Ausführung brachte, darunter Apple, Microsoft und PayPal, im Rahmen von Bug-Bounty-Programmen oder mit Erlaubnis.
So verhindern Sie Typosquatting
-
Im CI aus einem Lockfile installieren. Nutzen Sie
npm ciund seine Entsprechungen. Ein Tippfehler kann dann nur noch über eine geprüfte Änderung hineingelangen. Siehe was ein Lockfile leistet und was nicht. - Neue Abhängigkeiten in Pull Requests prüfen. Achten Sie auf den Namen selbst, und lesen Sie den Diff des Lockfiles, statt ihn zu überspringen.
- Vor der Installation prüfen. Vergleichen Sie den Namen mit der Dokumentation des Projekts, und seien Sie vorsichtig bei einem Paket mit wenigen Downloads, einer kürzlich erfolgten Erstveröffentlichung oder ohne Repository-Link.
- Install-Skripte begrenzen. Deaktivieren Sie sie, wo Ihr Build das zulässt.
- Mit neuen Paketen warten. Bösartige Pakete werden oft bald nach ihrem Erscheinen entdeckt und entfernt.
- Begrenzen, was ein Build erreichen kann. Ein Build, der nur mit bekannten Hosts kommunizieren kann, kann Ihre Secrets nicht an einen Angreifer senden, selbst wenn ein schädliches Paket läuft. Siehe GitHub-Actions-Egress-Richtlinie.
- Jeden KI-Vorschlag prüfen. Vergewissern Sie sich vor der Installation, dass ein Paket existiert und das gemeinte ist.
Bedenken Sie, dass ein Typosquat an seinem ersten Tag keine CVE hat, sodass ein SCA-Scan, der auf Advisories beruht, ihn nicht meldet. Mehr dazu unter Best Practices für Software-Lieferkettensicherheit.
Domain-Typosquatting
Die ursprüngliche Form des Angriffs, auch URL-Hijacking genannt, registriert eine Domain wie die falsch geschriebene Adresse einer Bank oder einer Login-Seite. Wer sich bei der Adresse vertippt, landet auf einer Kopie der Website, die darauf ausgelegt ist, Zugangsdaten zu stehlen oder Malware auszuliefern. Der Schutz sieht anders aus: Registrieren Sie gängige Falschschreibungen Ihrer eigenen Domains, überwachen Sie ähnliche Registrierungen und nutzen Sie einen Passwort-Manager, der auf der falschen Domain nichts automatisch ausfüllt.
Wie CRACI den Schaden begrenzt
CRACI erkennt neue bösartige Pakete nicht anhand von Verhalten oder Reputation. Nutzen Sie dafür eine Paket-Firewall oder ein Tool zur Verhaltensanalyse. CRACI dämmt sie stattdessen ein. Als Ihr GitHub-Actions-Runner setzt es eine Egress-Richtlinie durch, die Verbindungen blockiert, die Ihr Build nicht braucht, sodass ein Paket, das Secrets stiehlt, sie nirgendwohin senden kann, selbst wenn noch niemand den Angriff gesehen hat. Jedes Paket, das ein Job geladen hat, ist aufgezeichnet. Sobald ein Angriff bekannt ist, sehen Sie also, welche Builds das Paket geladen haben, und Releases mit einer veröffentlichten CVE werden markiert und können durch Policy-Gates blockiert werden. Siehe Was ist ein Lieferkettenangriff.
Typosquatting: häufig gestellte Fragen
Was ist Typosquatting, einfach erklärt?
Dabei wird ein Name registriert, der fast wie ein beliebter aussieht, etwa von einem Paket oder einer Website, um dann darauf zu warten, dass sich jemand vertippt. Der Doppelgänger verteilt dann Malware oder stiehlt Zugangsdaten.
Was ist ein Beispiel für Typosquatting?
2017 imitierte das npm-Paket crossenv das beliebte cross-env. Es funktionierte wie das echte Paket und sendete zusätzlich die Umgebungsvariablen der Nutzer an den Server des Angreifers.
Was ist der Unterschied zwischen Typosquatting und Dependency Confusion?
Typosquatting setzt darauf, dass sich jemand beim Namen eines öffentlichen Pakets vertippt. Dependency Confusion nutzt den exakten Namen eines privaten Pakets und setzt darauf, dass ein Build-System stattdessen eine öffentliche Version lädt.
Ist Typosquatting illegal?
Malware zu veröffentlichen oder Zugangsdaten zu stehlen ist in den meisten Ländern illegal. Domain-Typosquatting kann außerdem gegen das Markenrecht verstoßen, etwa gegen den US-amerikanischen Anticybersquatting Consumer Protection Act.
Was ist Slopsquatting?
Eine Variante, bei der ein Angreifer einen Paketnamen registriert, den KI-Assistenten gern erfinden. Wer das vorgeschlagene Paket installiert, erhält den Code des Angreifers.
Wie erkennen Sie Typosquatting?
Prüfen Sie neue Abhängigkeiten anhand von Name und Metadaten, und nutzen Sie ein Tool, das Paketnamen mit beliebten vergleicht oder das Verhalten analysiert. Advisory-basierte Scanner helfen erst, wenn das Paket gemeldet wurde.
Dämmen Sie das Paket ein, das Sie nicht erkannt haben
Blockieren Sie die ausgehenden Verbindungen, die Ihre Builds nicht brauchen, und behalten Sie eine Aufzeichnung jedes Pakets, das sie geladen haben.
Demo buchen