Behandeln Sie Ihre Abhängigkeiten und CI-Pipeline als Angriffsfläche_
Sicherheit in der Lieferkette betrifft nicht nur verwundbare Pakete. Sie umfasst auch Aktions-Pinning, Token-Bereich, Vertrauen in Artefakte und die Trennung privilegierter Workflows.
Die meisten Teams denken bei Risiken in der Lieferkette an "Hat npm audit etwas Schlechtes gefunden?"
Das ist nur ein kleiner Teil des Problems.
Eine moderne JavaScript-Lieferpipeline vertraut auf:
die Pakete, die Sie installieren
die transitive Pakete, die sie installieren
die GitHub-Aktionen, die Sie ausführen
die Tokens, auf die diese Workflows zugreifen können
Das ist eine bedeutende Angriffsfläche, insbesondere wenn CI die Berechtigung hat, Kommentare zu PRs abzugeben, Pakete zu veröffentlichen, Infrastruktur bereitzustellen oder in den Standardbranch zu pushen.
Der erste einfache Gewinn: Externe Aktionen pinnen
Das ist schwächer, als viele Teams erkennen:
uses: vendor/example-action@v2
Das Tag kann sich ändern.
Wenn Sie auf Drittanbieteraktionen angewiesen sind, pinnen Sie auf einen vollständigen Commit-SHA und überprüfen Sie Updates gezielt:
Das macht die Aktion nicht sicher. Es macht die Vertrauensentscheidung explizit und überprüfbar.
Untrusted Execution von Privileged Execution trennen
Eine der besseren Workflow-Muster ist:
Tests und Build-Schritte in einem unprivilegierten Workflow ausführen
Artefakte hochladen
Ein separater vertrauenswürdiger Workflow lässt diese Artefakte verwenden, wenn er Geheimnisse oder Schreibberechtigungen benötigt
Das verringert die Chance, dass untrusted Pull-Request-Code mit einem Token ausgeführt wird, das das Repository oder die Bereitstellungsumgebung verändern kann.
Minimieren Sie den Token-Bereich
Wenn ein Workflow nur Lesezugriff benötigt, geben Sie ihm Lesezugriff.
Wenn er Kommentare zu einem PR abgeben muss, erlauben Sie ihm nicht auch, Inhalte zu schreiben, Pakete zu verwalten oder Infrastruktur bereitzustellen.
Zu viele Pipelines scheitern an der einfachsten Regel der Sicherheitsengineering: Halten Sie den Schadenradius klein.
Paket-Sicherheit ist immer noch Teil davon
Sie sollten auch die Abhängigkeitshygiene als normale Betriebsarbeit behandeln:
Halten Sie Lockfiles im Commit
Überprüfen Sie größere Abhängigkeitänderungen
Entfernen Sie Pakete, die Sie nicht benötigen
Bevorzugen Sie etablierte Maintainer für kritische Pfade
Das ist nicht glamouröse Arbeit. Es ist, wie Software verteidigbar bleibt.