JA_NPM

NPM-Flooding-Fallstudie: „Im Kaninchenbau auf der Suche nach einem Tee“

At Xygeniwaren wir im vergangenen Jahr damit beschäftigt, ein umfassendes System zu implementieren, das öffentliche Open-Source-Paketregister auf verdächtige Aktivitäten oder von Natur aus bösartigen Code überwacht.

Diese Infrastruktur ermöglicht es uns, alle täglich veröffentlichten Pakete in Echtzeit zu analysieren. Darüber hinaus können wir damit ungewöhnliches Benutzerverhalten überwachen.

Obwohl das Vorhandensein von Schadcode in Paketregistern bekannt ist,, es gibt andere seltsame oder ungewöhnliche Verhaltensweisen, die den normalen Benutzern dieser Register völlig unbemerkt bleiben. Selbst für diejenigen von uns, die sie genau im Auge behalten, ist es nicht einfach, einen Grund oder eine Erklärung für ein solches Verhalten zu finden.

Was das Xygeni-Team auszeichnet, ist unsere Beharrlichkeit bei der Bewältigung eines Problems, daher sind wir tiefer in die Sache eingestiegen.

Alles begann mit einem Statistik-Spitzenwert

Wie ich bereits erwähnt habe, überwachen wir als Teil unserer Infrastruktur viele Aktivitätsmetriken in öffentlichen Open-Source-Paketregistern.

In den letzten Märztagen schlug meine Arbeitskollegin Carmen Alarm. Wir bemerkten eine erhebliche Abweichung in die Anzahl der auf NPM veröffentlichten Pakete. Nach einer ersten Überprüfung stellten wir fest, dass diese Abweichung hauptsächlich auf eine relativ kleine Anzahl von Benutzern zurückzuführen war, deren Paketveröffentlichungsrate plötzlich in die Höhe geschossen war.

Dies veranlasste uns, unseren Prozess und die damit verbundenen Daten innerhalb der Plattform zu überprüfen. Glücklicherweise ergab unsere Überprüfung, dass die Daten korrekt zu sein schienen, aber das war auch etwas rätselhaft!

Bei näherer Betrachtung stellten wir fest, dass diese Pakete mehrere gemeinsame Merkmale aufwiesen:

  • Bei den Herausgebern handelte es sich um neu erstellte Benutzer, die höchstens ein bis zwei Monate alt waren.
  • Die Pakete hatten scheinbar zufällige Namen, die wahrscheinlich mithilfe eines Wörterbuchs generiert wurden. Wir können Paketnamen mit seltsamen Namen finden wie enorme_milbe-smiletea, erick-mangut94-sukiwir, exotisches_reptil-appteadev or evident_thunfisch-appteadevWir fügen einen Anhang mit einigen Beispielen der Vermögenswerte bei, die wir gefunden haben.
  • Der Inhalt dieser Pakete war sehr ähnlich, oft sogar derselbe.

In diesem Zusammenhang stellten wir fest, dass eines der Pakete ein Python-Skript enthielt, möglicherweise durch Zufall, das offenbar zum automatischen Veröffentlichen der Pakete verwendet wird.

npm

Das Netz entwirren

Die Veröffentlichungsaktivität einiger dieser Verlage im letzten Monat verlief gemäß dem folgenden Zeitdiagramm:

 

NPM-Angriff

Hier sind die vollständigen Statistiken zu dieser Veranstaltung, die wir weitergeben können:

npm-Prüfung

Aus der Einzelüberprüfung einiger Pakete dieser Benutzer ergab sich nichts Relevantes. Dies veranlasste uns, das Gesamtbild aller Pakete zu analysieren und nach Mustern zu suchen, die Hinweise auf diesen Erfolg geben könnten.

Schließlich müssen wir eine ganze Menge Pakete analysieren:

npm-Angriff 2

Dies sind die wichtigsten Punkte, die wir aus der Analyse hervorheben können:

  • Viele der NPM-Pakete sind miteinander verknüpft. Auf einige wird als Abhängigkeit von anderen verwiesen.
  • Obwohl es sich um seltsame Pakete handelt und wahrscheinlich niemand von ihrer Existenz weiß, werden einige davon wöchentlich häufig heruntergeladen. Es ist schwer zu akzeptieren, dass ein normaler Benutzer Pakete wie 0mc03esisd
  • Einige haben zugehörige Repositories. Manchmal scheinen die Besitzer dieser Repositories Dummy-Konten zu sein, ähnlich denen auf npm.

Hinweis: Benutzer laden zusätzliche Pakete in Wellen hoch. Die bereitgestellten Daten können daher leicht variieren.

npm-Angriff 2

Dies ist ein Beispiel für eines der zugehörigen Repositorien. Es enthält den Code einiger der veröffentlichten Pakete. Außerdem einige andere Dateien, wie z. B. tee.yaml Datei.

Treffen mit dem/den Schauspieler(n)

Ob dies das Werk eines einzelnen Autors oder mehrerer Mitwirkender ist, lässt sich nur schwer feststellen. Wir haben jedoch einige Hinweise, die den Ursprung dieser Aktivität eingrenzen:

  • Sprache: Bestimmte Kommentare im Code sind auf Indonesisch.
npm-Angriff 3
  • Standort: Bestimmte Besitzer der zugehörigen Repositories geben ihren Standort in Indonesien an.
  • Der Standort, den wir anhand der Aktivitätsmetadaten auf GitHub ermitteln können, weist ebenfalls auf Indonesien hin.
NPM_JA

Fünf Uhr Tee

Da Indonesien eine britische Kolonie war, passte es perfekt, hier Tee zu trinken. In diesem Fall handelt es sich allerdings um eine ganz besondere Teesorte.

Erinnerst du dich an die tee.yaml Dateien, die wir am Anfang gesehen haben? Damals haben wir ihren Inhalt nicht gezeigt, aber er sah so aus:

npm-Angriff 4

Diese Dateien scheinen mit dem Teeprotokoll. Aber was genau ist es? Wir erreichten https://tea.xyz/blog/250k-grant-for-open-source-developers, in dem der Zweck beschrieben wird:

Tea bringt Bewegung in die digitale Welt, indem es das seit langem bestehende Problem der unzureichenden Vergütung von Open-Source-Entwicklern angeht. Die Lösung dieses Problems ist dringender denn je, weshalb wir beschlossen haben, vor dem Start des Protokolls Zuschüsse in Höhe von 250 US-Dollar bereitzustellen. Diese erste Phase zielt darauf ab, Betreuer von Open-Source-Projekten zu unterstützen, die einen wesentlichen Einfluss auf das Open-Source-Software-Ökosystem haben und einen TeaRank von über 30 vor dem Tea Protocol Incentivized Testnet aufweisen.“

Laut den Teeprotokolldokumenten: 

„Damit ein Projekt im TEA-Protokoll registriert werden kann, ist eine Datei tea.yaml erforderlich, die als Verfassung des Projekts dient und die Anzahl der Mitwirkenden sowie die Anzahl der Stimmen regelt, die zur Durchführung bestimmter Aktionen erforderlich sind.“

 

Nachdem wir auf das Tee-Netzwerk zugegriffen hatten, versuchten wir, eines der Pakete zu finden, dessen Ruf unserer Meinung nach aufgebauscht wird. Wir haben es gefunden:

Das scheint zu erklären, was hier vor sich geht: Bestimmte Benutzer blasen ihre Open-Source-Projekte mit fiktiver Popularität auf, um den TeaRank zu kapern und die Vorteile der Tea Association zu erhalten. Schließlich ist Geld neben Sex die älteste Antriebskraft. 

Fazit und abschließende Gedanken

Obwohl in diesen NPM-Paketen keine Hinweise auf Schadcode gefunden wurden und sie wahrscheinlich nicht für die Verwendung durch irgendjemanden gedacht waren, verstoßen sie möglicherweise gegen mehrere Servicebedingungen (TOS) von NPM, GitHub oder der Tea Association. Dies fällt jedoch nicht in den Aufgabenbereich unserer Arbeit (sie wurden jedoch benachrichtigt und werden die Maßnahmen ergreifen, die sie für angemessen halten). Die missbräuchliche Verwendung dieser Plattformen wird uns und unsere Organisationen in irgendeiner Weise beeinträchtigen.

Klar ist, dass jedes scheinbar harmlose Open-Source-Paket Verhaltensweisen aufweisen kann, die ohne vollständige Kontextinformationen schwer zu verstehen sind.

Als Entwickler finde ich es eine Herausforderung, alle Open-Source-Pakete, die in den von uns entwickelten und gewarteten Anwendungen verwendet werden, mit einem gewissen Maß an Sicherheit manuell zu kontrollieren. Ohne die Hilfe eines Tools, das diese Kontrolle automatisiert, könnte diese Aufgabe unzählige Stunden unserer Teams in Anspruch nehmen.

Es besteht immer die Möglichkeit, wegzuschauen und darauf zu vertrauen, dass die Open-Source-Welten sichere Orte sind. Glücklicherweise glaube ich, dass diese Denkweise heute nicht sehr weit verbreitet ist; dieser Fall war praktisch harmlos, aber wir haben kürzlich einen viel schwerwiegenderen Vorfall mit dem XZ-Hintertür, und es war nicht der Einzige.

Wenn Sie bis hierhin gelesen haben, hoffe ich, dass Ihnen die Einzelheiten dieses merkwürdigen Ereignisses gefallen haben. Vergessen Sie nicht, sich ein paar Minuten Zeit zu nehmen, um zu prüfen, was Xygeni zur Sicherheit Ihres Unternehmens beitragen kann.

Anhang: Liste der zugehörigen Assets, die im endgültigen Artikel enthalten sein sollen

NPM relevantere Benutzer basierend auf der Anzahl der veröffentlichten Pakete: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

Eine kleine Auswahl der zugehörigen Pakete: Mikrositer, Cryndex, Arts-Dao, Seblakkuah, Vndrabnb, Vndrave, Depfif, Depsik, Depeit, Depnin, Dopon, Kellymanteasproject.

Einige der zugehörigen GitHub-Repositorys, die tea.yml-Dateien enthalten:

SCA-Tools-Software-Zusammensetzungs-Analyse-Tools
Priorisieren, beheben und sichern Sie Ihre Softwarerisiken
7-Tage kostenlose Testversion
Keine Kreditkarte erforderlich

Sichern Sie Ihre Softwareentwicklung und -bereitstellung

mit der Xygeni-Produktsuite