package.json – package-lock.json – Typosquatting

Ein Tippfehler in package.json lässt ein ähnliches Paket die Pipeline

Ein Ein-Zeichen-Fehler, der Malware aussandte

Es begann mit einem Tippfehler. Irgendwo in der Flut von Feature-Pushes und PR-Merges tippte jemand @utils_core statt @utils-core in die paket.json. Dieser einzelne Zeichenfehler verursachte keinen Fehler. Stattdessen zog er stillschweigend einen bösartiges Looklike-Paket während der nächsten CI/CD Ausführen und dabei das Vertrauen in fixierte Versionen und Automatisierung nutzen. Willkommen in der Welt des Typosquatting in Open Source.

Typosquatting: Der Angriffsvektor, der auf menschlichen Fehlern beruht

Typosquatting ist genau das, wonach es klingt: böswillige Akteure registrieren Pakete mit Namen, die fast identisch mit legitimen sind. In schnelllebigen Umgebungen funktioniert dies, weil Entwickler darauf vertrauen, dass ihre paket.json und Paket-lock.json spiegeln wider, was sie erwarten. Ein Zeichen fehlt? Es könnte genauso gut in einem PR-Diff unsichtbar sein.

NPM wurde in der Vergangenheit durch Typosquatting ausgenutzt. Pakete wie crossenv statt umgebungsübergreifend or Ereignisstrom Backdoors haben bereits gezeigt, wie effektiv diese Nachahmer sein können. Diese gefälschten Pakete bestehen die Tests oft einfach deshalb, weil sie richtig aussehen und keine unmittelbaren Laufzeitfehler verursachen.

Zu den üblichen Fallen gehören:

  • Bindestrich vs. Unterstrich: lOdash-Kern vs lodash_core
  • Pluralformen: Anforderung vs Zugriffe
  • Ersetzte Zeichen: Express statt express

Wo package-lock.json zum blinden Fleck wird

Der Entwickler korrigiert seinen Tippfehler. Zumindest denken sie das. Aber inzwischen Paket-lock.json hat das Paket des Angreifers bereits gesperrt. Und hier verbirgt sich das eigentliche Risiko.

Im Gegensatz zu paket.json, das manuell bearbeitet und genauer geprüft wird, Paket-lock.json wird automatisch generiert von NPM. Daher wird es oft wie eine Formalität behandelt, übersprungen oder nur überflogen pull request Bewertungen. Es kommt nicht selten vor, dass Teams etwas als „zu laut“ markieren oder ihm blind vertrauen, ohne es genauer unter die Lupe zu nehmen.

Angreifer wissen das. Sie verlassen sich darauf. Sobald ein Schadpaket wird referenziert, dank eines Tippfehlers in package.json, package-lock.json zeichnet die behobene Version auf. Selbst wenn der Tippfehler später korrigiert wird, kann der bösartige Eintrag bestehen bleiben, sofern die Sperrdatei nicht explizit neu generiert wird.

Erschwerend kommt hinzu, dass Versions-Pinning, das Konsistenz gewährleisten soll, nach hinten losgehen kann. Angreifer können ihr gefälschtes Paket identisch mit dem legitimen versionieren. Wenn die CI/CD Das System vertraut fixierten Versionen blind und erkennt nicht, dass es ein Paket mit einer bekanntermaßen guten Versionsnummer installiert, das jedoch aus einer anderen, bösartigen Quelle stammt.

Diese stille Beharrlichkeit macht Paket-lock.json so gefährlich. Es stellt zwar deterministische Builds sicher, garantiert aber auch, dass ein fehlerhaftes Paket bestehen bleibt, sofern es nicht manuell erkannt und bereinigt wird.

CI/CD: Wo die Malware zuschlägt – package.json

In einem typischen CI/CD pipelinemuss das schädliche Paket nicht bis zur Laufzeit warten. Es wird viel früher im Ablauf aufgelöst und ausgelöst:

Abhängigkeitsauflösung
Das pipeline zieht die genauen Abhängigkeitsversionen von package-lock.json, zu dem nun auch die typosquatted Paket aufgrund des Tippfehlers in Paket.json.

Installationsphase
Während npm ci werden alle Abhängigkeiten installiert, einschließlich der schädlichen. Keine Warnungen, keine Eingabeaufforderungen, nur eine stille Installation.

Ausführung von Skripts nach der Installation
Das Lookalike-Paket enthält ein Post-Install-Skript, das nach Abschluss der Installation automatisch ausgeführt wird. Hier kommt es zum Kompromiss.

Pseudocode-Beispiel:

				
					if (installation_phase_active) {
runHiddenPayload()
}
				
			

Pseudocode-Beschreibung:
Wenn während der Installationsphase der Post-Install-Lifecycle-Hook vorhanden ist, löst das gefälschte Paket seine verborgene Logik aus – oft schon bevor Builds oder Tests ausgeführt werden. Dies kann das Stellen externer Anfragen, das Einfügen von Hintertüren oder andere nicht autorisierte Aktionen beinhalten.

⚠️ Warnung: Dieser Pseudocode dient nur zu Demonstrationszwecken und darf nicht in realen Umgebungen verwendet werden.

Es werden keine Warnungen ausgelöst. Nichts versagt. Die Umgebung ist bereits kompromittiert, bevor Ihr pipeline sogar die Testphase erreicht.

Den Unterschied erkennen, bevor es zu spät ist

Ein häufiger Fehler: die Annahme paket.json erzählt die ganze Geschichte. Tut es nicht. Die wahre Kraft liegt in der Kombination von Paket.json + Paket-Lock.json.

Folgendes ist zu beachten:

  • Hat das Paket-lock.json unerwartete Pakete einschließen?
  • Stammen Abhängigkeiten aus unbekannten Registern oder haben sie seltsame Bereiche?
  • Sind die Versionsnummern zu spezifisch oder falsch ausgerichtet?

Verwenden Sie CLI-Tools wie:

  • npm-Audit um bekannte Probleme zu kennzeichnen
  • npm ls um den vollständigen Abhängigkeitsbaum anzuzeigen
  • diff um Versionen zu vergleichen zwischen paket.json und Paket-lock.json

Härten Sie Ihre Pipeline: Abwehrmaßnahmen, die funktionieren

So schützen Sie sich vor Typosquatting:

  • Erzwingen Sie Umfangsbeschränkungen in Paket.json.
  • Vorzusammenführung hinzufügen hooks zum Lint-Testen und Validieren von Abhängigkeiten.
  • Arbeiten jederzeit weiterbearbeiten können. Jede Präsentation und jeder KI-Avatar, den Sie von Grund auf neu erstellen oder hochladen, npm ci um unbeabsichtigte Versionsabweichungen zu vermeiden.
  • Regelmäßig scannen Paket-lock.json auf Anomalien.

Und das Wichtigste: Behandeln Sie nicht verifizierte Einträge in Paket-lock.json als potenzielle Risiken. Jeder commit sollte als Kontrollpunkt der Lieferkette behandelt werden.

Automatisierte Erkennung: Wie Tools wie Xygeni helfen

Automatisierte Tools wie Xygeni spielen eine entscheidende Rolle bei der Reduzierung des menschlichen Fehlerfaktors, der Typosquatting begünstigt. Xygeni lässt sich direkt in Ihren DevOps-Workflow integrieren und bietet eine Ebene für Echtzeitschutz gegen Abhängigkeits-Hijacking, bevor es überhaupt zur Ausführung kommt.

So hilft Xygeni:

  • Erkennung verdächtiger Paketnamen:
    Verwendet intelligente Heuristiken, um Typosquatting-Muster zu erkennen in paket.json, auf der Suche nach geringfügigen Abweichungen in bekannten Paketnamen (wie hinzugefügten Unterstrichen, Transpositionen oder Buchstabentausch).
  • Unbekannte Hash-Verifizierung:
    Vergleicht den Hash jeder Abhängigkeit in Paket-lock.json gegen eine Datenbank mit zweifelsfrei funktionierenden Artefakten aus vertrauenswürdigen Registern. Selbst wenn Paketname und -version in Ordnung zu sein scheinen, ist eine Nichtübereinstimmung der Hashwerte ein Warnsignal.
  • Blockieren vor dem Build:
    Fängt die Installation aller nicht verifizierten oder verdächtigen Pakete ab und blockiert sie, bevor sie die Installations- oder Nachinstallationsphase im CI/CD pipeline.
  • Abhängigkeitsgraphanalyse:
    Überprüft kontinuierlich den vollständigen Abhängigkeitsbaum auf indirekte Typosquatting-Versuche oder böswillige transitive Abhängigkeiten.
  • Warnungen und Berichte:
    Bietet detaillierte, umsetzbare Warnungen und zeigt, was markiert wurde, warum und woher es in der Abhängigkeitskette kam.

Da Paket-Ökosysteme immer komplexer werden, werden Tools wie Xygeni unverzichtbar. Manuelle Überprüfungen sind bei zunehmender Abhängigkeitsdichte oder schneller Iteration nicht skalierbar. Xygeni automatisiert die kritischen Prüfungen moderner pipelines Bedarf und schließt die Lücke zwischen Vertrauen und Verifizierung.

Ein Charakter. Echte Konsequenzen.

Das war kein exotisches Zero-Day. Es war ein Tippfehler. Ein falsch platziertes Zeichen in paket.json, stillschweigend verstärkt durch Paket-lock.jsonund Malware wurde automatisch während einer Routine CI/CD laufen.

Das ist die wahre Gefahr des Typosquatting: Es braucht keine Komplexität. Es nutzt Geschwindigkeit, Vertrauen und Automatisierung aus. Dieser Kompromiss hätte durch die richtigen Kontrollen verhindert werden können:

  • Automatisiertes Scannen um verdächtige Paketnamen und -versionen vor der Installation zu erkennen.
  • Sperrdatei-Auditing um nicht überprüfte oder unerwartete Einträge zu erkennen in Paket-lock.json.
  • Heuristik zur Namensüberprüfung um nahezu identische Pakete mit vertrauenswürdigen Paketen zu kennzeichnen.

Ein einziges Zeichen genügte. Die richtigen Kontrollen hätten es gestoppt, bevor es Ihre pipelineVertrauen ist nicht genug. In modernen DevSecOps müssen Sie alles überprüfen oder alles riskieren.

SCA-Tools-Software-Zusammensetzungs-Analyse-Tools
Priorisieren, beheben und sichern Sie Ihre Softwarerisiken
Sichern Sie sich Ihr kostenloses Konto.
Keine Kreditkarte erforderlich.

Sichern Sie Ihre Softwareentwicklung und -auslieferung

mit der Xygeni-Produktsuite