Kanjani betonte, dass er sämtliche identifizierenden Angaben, Zahlen und die Abfolge der Ereignisse zum Schutz der Vertraulichkeit verändert habe. Die in der Ich-Perspektive erzählte Lagezentrums-Schilderung der zugrunde liegenden Angriffstechniken, technischen Verhaltensweisen und Schwierigkeiten beruhe jedoch auf tatsächlichen Vorgängen.
Im geschilderten Fall wirkte ein Paket auf den ersten Blick unbedenklich: Der SHA-Hash stimmte überein, das zugehörige Repository hatte mehr als 3.400 GitHub-Sterne und erschien den Sicherheitswerkzeugen des Unternehmens glaubwürdig. Drei Ebenen tiefer steckte allerdings eine bösartige transitive Abhängigkeit mit dem Namen shai-hulud – benannt nach den riesigen Sandwürmern aus der Dune-Filmreihe. Da es sich nicht um eine direkte Abhängigkeit handelte, tauchte sie in einer Prüfung der obersten Abhängigkeitsebene nicht auf.
Der erste Hinweis auf ein Problem kam von einem Verhaltensscanner, der meldete, dass das Paket etwas ausführte, was es nicht hätte ausführen dürfen. Die Einsatzkräfte stuften die Warnung zunächst als wahrscheinlichen Fehlalarm ein, weil der Hash passte und es keine weiteren offensichtlichen Anzeichen für Bösartigkeit gab. Auch die SBOM, die das Sicherheitsteam heranzog, wies die Umgebung als sauber aus. Was damals niemand bemerkte: Die SBOM war zwei Entwicklungssprints alt.
Im weiteren Verlauf konnte das Team nicht sicher sagen, welche Dienste das Paket überhaupt nutzten. Kompromittierungsindikatoren lieferten erste Anhaltspunkte, ließen aber keine Aussage darüber zu, welche Dienste betroffen waren und wie weit sich der Vorfall ausgebreitet hatte. Benötigt wurden Laufzeitbelege, um zu klären, welcher Code tatsächlich ausgeführt wurde und worauf er zugreifen konnte. Ohne diese Laufzeittelemetrie blieb nur, Protokolle über mehr als 400 Dienste hinweg manuell zu korrelieren – ein verlässliches Bild der möglichen Reichweite kam dabei nicht zustande.
Erschwerend wirkte die Kommunikation: Eine erste Slack-Nachricht des Incident-Response-Verantwortlichen an unternehmensweite Beteiligte war zu vage formuliert und löste parallele Untersuchungen zu dem noch laufenden Vorfall aus.
Auch die Versuche, den Angreifer zu identifizieren, liefen ins Leere. Das Team verfolgte Registry-Eigentümerschaft, die Maintainer-Historie bei npm, Veröffentlicher-Identitäten und GitHub-Einträge – ohne Ergebnis. Das Repository war von einem legitimen Projekt kopiert worden, Identität und Kontohistorie des Veröffentlichers wirkten erfunden, so Kanjani. Sicherheitsforscher haben inzwischen zumindest einen Teil der späteren Shai-Hulud-Angriffe einem als TeamPCP geführten Akteur zugeschrieben.
Kanjanis zentrale Schlussfolgerung: Organisationen müssten über SBOMs und Abhängigkeitsinventare hinausblicken und ihre Vorfallsreaktion an dem ausrichten, was in der Produktion tatsächlich läuft. Sicherheitsteams müssten in die Lage versetzt werden, Vorfälle zu erkennen, einzugrenzen, zu priorisieren und einzudämmen – mit Echtzeiteinblick in betroffene Dienste und den möglichen Umfang einer Kompromittierung. „Sie triagieren einen Laufzeitgraphen. Keine Abhängigkeitsdatei. Ihre Werkzeuge müssen das abbilden", sagte er.
Konkret empfahl Kanjani:
- ausgelieferte SBOMs nicht älter als 72 Stunden zu halten und dafür zu sorgen, dass mehr als 98 Prozent der Produktionsdienste diese Schwelle einhalten
- Laufzeitfähigkeiten zu aktivieren, die unbekannte Modul-Ladevorgänge in weniger als 90 Sekunden erkennen
- tägliche Registry-Prüfungen, um Nachahmungen interner Paketnamen binnen 24 Stunden nach Veröffentlichung zu entdecken
Diese Werte seien keine allgemeingültigen Richtgrößen, sondern Zielmarken, die jede Organisation auf ihre eigene Umgebung abstimmen müsse.
Zudem sollten sich Sicherheitsteams auf die Operation statt auf den Operateur konzentrieren. „Identitätssignale wechseln. Operative Notwendigkeiten nicht. Bauen Sie die Erkennung um das herum auf, was der Wurm tun muss, um zu funktionieren – nicht darum, wer ihn steuert", sagte Kanjani.
Für die Kommunikation mit Beteiligten gelte, direkt und eindeutig zu sein, Ehrlichkeit vorausgesetzt, und die Details in einer Sprache zu präsentieren, die zum jeweiligen Publikum passt. „Erzählen Sie keinen Mist. Sagen Sie ihnen die Realität so, dass sie sie aufnehmen können", sagte er. „Sie wollen keine Panik verkaufen."
