Maintainer, das ist für Sie. Wir arbeiten mit Drydock zusammen, damit Maintainer genau sehen können, was in einem Package enthalten ist, bevor sie es genehmigen, und Malware abgefangen wird, bevor sie ausgeliefert wird, anstatt sie nachträglich offenzulegen. Drydock ermöglicht es Ihnen, die tatsächlichen Bytes eines gestaffelten Releases zu lesen, bevor es live geht, sodass fehlerhafte Versionen bei der Genehmigung abgefangen werden, anstatt in einer Post-Mortem-Analyse. Für npm- und PyPI-Maintainer ist Drydock kostenlos verfügbar.
Malware stoppen, bevor sie veröffentlicht wird
Das letzte Jahr war geprägt von Malware-Angriffen auf Open-Source-Pakete. Wir haben uns daran gewöhnt, Alerts und Tweets mit weiteren „ALARM! Großer Malware-Angriff!“ zu sehen. Verbesserungen bei der Erkennung und Berichterstattung sind wichtig, aber wenn wir etwas offenlegen müssen, ist es bereits zu spät. Paket-Maintainer verdienen in diesem Prozess frühzeitig mehr Unterstützung, um Probleme zu erkennen und zu verhindern, bevor sie sich verbreiten und alle in Panik geraten und Schadensbegrenzung betreiben.
Die jüngste Ankündigung von npm zum Staged Publishing ist ein Schritt in diese Richtung. Das Update führt eine Staging-Warteschlange ein, in der alle Paketversionen auf die manuelle Genehmigung der Veröffentlichung durch einen Maintainer mit 2FA warten. Obwohl dies eine Überprüfungsmöglichkeit bietet, kann der Maintainer jedoch nicht in das vorbereitete Paket hineinsehen. Er kann die Versionsnummer einsehen, aber nicht, welche Bytes sich im Paket befinden oder was sich gegebenenfalls gegenüber dem aktuellen Zustand des Repos geändert hat.
Aikido setzt sich dafür ein, Maintainern zu helfen, Malware-Angriffe zu stoppen, bevor sie geschehen. Deshalb arbeiten wir mit Drydock zusammen, um die Veröffentlichung von Packages sicherer und die gestaffelte Veröffentlichung nützlicher zu machen. Wenn Sie ein npm- oder PyPI-Package pflegen, bietet Drydock Ihnen eine kostenlose Möglichkeit zu sehen, was wirklich in einem Release enthalten ist, bevor es veröffentlicht wird. Drydock analysiert gestaffelte npm-Packages, um Ihnen genau zu zeigen, was sich in den Bytes geändert hat, bevor Sie es genehmigen, damit der genehmigende Maintainer endlich in das vorbereitete Package sehen kann.
Für PyPI, das kein Staged Publishing hat, führt Drydock stattdessen dieselbe Überprüfung innerhalb Ihrer Release-Pipeline durch. Derselbe Pfad gilt für npm-Pakete, die ohne Staging veröffentlicht werden. Unterstützung für weitere Registries wird ebenfalls bald verfügbar sein.
So funktioniert Drydock
Wenn eine neue gestagte Version erscheint, nimmt Drydock sie auf, lädt den exakten Tarball in eine kurzlebige Sandbox, vergleicht ihn mit der zuletzt veröffentlichten Version und zeigt Ihnen den Bericht auf seinem Dashboard. Sie sehen jede Änderung, wobei die sicherheitsrelevanten markiert und nach Schweregrad geordnet sind. Diese Markierungen erfassen, worauf Malware angewiesen ist, wie ein neues Preinstall- oder Postinstall-Lifecycle-Skript, zuvor nicht vorhandene Dateien, Code, der einen Prozess startet oder das Netzwerk kontaktiert, oder eine hinzugefügte Binärdatei. Jede Feststellung ist der Zeile zugeordnet, die sie eingeführt hat, sodass die Überprüfung als kurze Liste erscheint, die Sie in Sekunden überfliegen können, anstatt als eine Wand von Quellcode. Sie lesen die Feststellungen und genehmigen dann den Veröffentlichungsschritt in npm mit Ihrer eigenen 2FA.
Der obige Ablauf setzt eine gestagte npm-Veröffentlichung voraus. Für PyPI oder für ein npm-Paket, das ohne Staging veröffentlicht wird, läuft Drydock stattdessen als GitHub Actions Environment Gate. Das Release pausiert in Ihrer Pipeline, bevor es die Registry erreicht. Drydock überprüft das erstellte Artefakt und veröffentlicht denselben Diff sowie die nach Schweregrad geordneten Feststellungen, und ein Maintainer genehmigt oder lehnt in Drydock ab, bevor etwas öffentlich wird.
Drydock veröffentlicht niemals selbst, sodass Sie keine Fehlerquellen in den Release-Prozess einfügen. Drydock verwendet ein schreibgeschütztes npm-Token, gerade genug, um gestagte Veröffentlichungen zu sehen. Es ist darauf beschränkt, nur Dateilisten und Text zu lesen, sodass es niemals den Paketinhalt ausführt. Und im Sinne der Einbeziehung von Menschen trifft jedes Mal ein Mensch die Entscheidung.
Den Malware-Kreislauf durchbrechen
Als npm und andere Package Manager eingeführt wurden, war die sofortige Veröffentlichung eine Funktion für Ökosysteme, die schnell wachsen konnten, weil sie ihren Mitgliedern vertrauten. Heute jedoch nutzen Angreifer die Geschwindigkeit und Einfachheit der Veröffentlichung, um Malware-Angriffe durchzuführen.
Gestaffelte Veröffentlichung durchbricht dieses Muster, indem die Version vor der Veröffentlichung zurückgehalten wird. Drydock macht dieses Zurückhalten bedeutungsvoll, indem es dem Maintainer genau zeigt, was sich geändert hat, solange noch Zeit ist, nein zu sagen. Die Erkennung erfolgt vor dem ersten Download, anstatt in einer Post-Mortem-Analyse, nachdem der Schaden bereits entstanden ist.
Das ist die Welt, die wir uns für Maintainer wünschen. Weniger Aufwachen mit Malware-Offenlegungen, mehr das Problem selbst finden und stoppen.
Die Einrichtung ist einfach und kostet nichts. Aktivieren Sie npm's gestaffelte Veröffentlichung für Ihr Package, verbinden Sie Drydock mit Ihrer Organisation mit einem schreibgeschützten Token, und es beginnt automatisch mit der Überprüfung gestaffelter Versionen. Für die GitHub Actions-Einrichtung müssen Sie lediglich die GitHub-App und die Umgebung verknüpfen. Erfahren Sie mehr über Drydock und den Einstieg auf deren Website.

