Zephyrnet-Logo

Software-Supply-Chain-Strategien zur Abwehr von Abhängigkeitsverwirrungsangriffen

Datum:

"Was ist in einem Namen? Das, was wir eine Rose nennen
Jeder andere Name würde so süß riechen.“
— Romeo und Julia, Akt 2, Szene 2

Als Shakespeare diese Worte im Jahr 1596 schrieb, sagte er, dass ein Name nur eine Konvention sei. Es hat keine intrinsische Bedeutung. Julia liebt den Menschen Romeo, nicht wegen seines Namens.

Aber ohne es zu wissen, beschrieb er auch Anfälle von Abhängigkeitsverwirrung.

Abhängigkeitsverwirrung entsteht, wenn Pakete, die Sie in Ihrem Code verwenden, nicht Ihnen gehören. Sie haben den gleichen Namen, aber es ist nicht Ihr Code, der in der Produktion ausgeführt wird. Gleicher Name, aber eine Packung riecht nach Rose und die andere … stinkt.

Aktuelle Forschungsberichte schätzen, dass 41–49 % der Unternehmen dem Risiko von Angriffen durch Abhängigkeitsverwirrung ausgesetzt sind. Neue Untersuchungen von OX Security zeigen, dass 73 % ihrer Vermögenswerte anfällig sind, wenn ein Unternehmen einem Angriff durch Abhängigkeitsverwechslungen ausgesetzt ist. Die Untersuchung konzentrierte sich sowohl auf mittlere als auch auf große Unternehmen (1+, 8+, 80+ Mitarbeiter) in einem breiten Spektrum von Sektoren – Finanzen, Gaming, Technologie und Medien – und stellte fest, dass das Risiko in jedem Sektor und in Unternehmen jeder Größe besteht. Die Untersuchung ergab außerdem, dass fast alle Anwendungen mit mehr als einer Milliarde Benutzern Abhängigkeiten verwenden, die anfällig für Abhängigkeitsverwechslungen sind.

Dieser Artikel soll Ihnen helfen, Abhängigkeitsverwirrung zu verstehen und sie zu verhindern.

Doppel, Doppel

Abhängigkeiten (auch Pakete genannt) sind die Bausteine ​​Ihrer Software. Typischerweise führen diese Softwareteile, unabhängig davon, ob sie von ganzen Communities oder innerhalb eines Unternehmens entwickelt werden, eine gemeinsame und notwendige Aufgabe aus.

Paketmanager werden häufig verwendet, um Abhängigkeiten zu installieren und auf dem neuesten Stand zu halten. Sie durchsuchen sowohl öffentliche als auch private Register nach dem Namen des Pakets und wählen unter sonst gleichen Bedingungen die höchste Versionsnummer aus. Angreifer nutzen dies aus, indem sie ein „Dummy“-Paket mit demselben Namen, aber einer höheren Version in der öffentlichen Registrierung ablegen.

Wenn ein Paketmanager auf zwei identische Pakete stößt, eines in einer öffentlichen Registry und eines in einer privaten Registry, führt das zu Verwirrung – daher der Name „Abhängigkeitsverwirrung“. Da die beiden Pakete identisch sind, entscheidet sich der Manager automatisch für die Installation des Pakets mit einer höheren Version: in diesem Fall das Schadpaket des Angreifers.

Dadurch erhalten Hijacker eine Hintertür in Ihre Software. Von diesem Punkt an können sie Datenverstöße begehen, geistiges Eigentum stehlen und auf andere Weise die Vertrauenskette der Software-Lieferkette gefährden. Sie können auch Compliance-Verstöße einführen, die schwere behördliche Strafen nach sich ziehen.

Mühsal und Ärger

Es gibt verschiedene Ansätze für einen Abhängigkeitsverwirrungsangriff.

  • Namensraum. Durch Hochladen einer Schadsoftware-Bibliothek in ein öffentliches Register – etwa den Python Package Index (PyPI) oder JavaScript npm-Registrierung - das ist ähnlich benannt an eine vertrauenswürdige, intern verwendete Bibliothek senden, können Systeme, die eine Namespace-/URL-Prüfung unterlassen oder den Abruf aus einer privaten Registrierung nicht erzwingen, versehentlich den Schadcode einschleusen. Der jüngster Vorfall mit PyTorch-Abhängigkeitsverwirrung ist ein solches Beispiel.
  • DNS-Spoofing. Durch den Einsatz einer Technik wie DNS-Spoofing können Systeme angewiesen werden, Abhängigkeiten aus bösartigen Repositorys abzurufen und gleichzeitig scheinbar legitime interne URLs/Pfade anzuzeigen.
  • Scripting. Durch die Änderung von Build-/Installationsskripts oder CI/CD-Pipeline-Konfigurationen können Systeme dazu verleitet werden, Softwareabhängigkeiten von einer bösartigen Quelle und nicht von einem lokalen Repository herunterzuladen.

Dinge gut und mit Sorgfalt erledigt

Führen Sie diese Praktiken ein, um sich vor Abhängigkeitsverwirrungen zu schützen.

  • Legen Sie Richtlinien im Paketmanager fest. Verhindern Sie, dass Paketmanager einem öffentlichen Paket Vorrang vor einem privaten Paket einräumen.
  • Fügen Sie immer eine .npmrc-Datei hinzu. Wenn Sie das beliebte NPM als Paketmanager verwenden, fügen Sie immer eine .npmrc-Datei hinzu, die angibt, wo Pakete in einem bestimmten Organisationsbereich abgerufen werden sollen.
  • Reservieren Sie den Paketnamen in einem öffentlichen Register. Eine weitere Möglichkeit zum Schutz vor Abhängigkeitsverwirrungsangriffen besteht darin, den Paketnamen in einer öffentlichen Registrierung zu reservieren, damit Hijacker ihn nicht verwenden und den Paketmanager daher nicht dazu verleiten können, ein schädliches Paket zu installieren.

Um sich vollständig vor Angriffen durch Abhängigkeitsverwirrung zu schützen, sollten Unternehmen immer verwenden Organisationsbereiche für alle internen Pakete, auch wenn Sie es in Ihrer internen Registrierung veröffentlichen. Organisationsbereiche sollten auch im öffentlichen Register von NPM registriert werden, um zu verhindern, dass jemand den Bereich kapert und die Verwirrung ausnutzt.

Paketnamen sollten ebenfalls öffentlich registriert werden. Wenn eine Organisation beispielsweise das beliebte PIP als Paketmanager für Python-Abhängigkeiten verwendet, sollte sie interne Pakete mit einem strengen Suffix erstellen, das erkennbar ist und projektübergreifend funktioniert. Laden Sie ein leeres Paket mit demselben Namen als Platzhalter in die öffentliche Registrierung PyPI hoch.

Ein weiterer Grund, den Paketnamen in einer öffentlichen Registrierung zu reservieren, besteht darin, dass Entwickler alle Paketnamen in der privaten Registrierung in einen Namen ändern müssen, der noch nicht in der öffentlichen Registrierung reserviert wurde, wenn ihn jemand anderes reserviert (böswillig oder nicht). Dies kann ein langer und mühsamer Prozess sein.

Es ist wichtig zu beachten, dass nicht alle Paketregistrierungen es Benutzern erlauben, Paketnamen zu reservieren. Stellen Sie daher sicher, dass Sie eine finden, bei der dies möglich ist.

Ausgang, verfolgt von einem Bären

Angriffe durch Abhängigkeitsverwirrung stellen eine ernsthafte und unmittelbare Bedrohung für die Cybersicherheit von Unternehmen auf der ganzen Welt dar. Etwa die Hälfte aller Organisationen ist gefährdet, und 73 % der Vermögenswerte dieser Organisationen sind gefährdet. Um dieser wachsenden Bedrohung entgegenzuwirken, müssen Unternehmen robuste Präventivmaßnahmen umsetzen und Best Practices für die Cybersicherheit übernehmen.

Shakespeares Rosen mögen das Risiko von Abhängigkeitsverwirrungsangriffen schon seit Hunderten von Jahren vorhergesagt haben, aber ein anderes Zitat des Barden könnte einige Weisheiten zum Schutz davor enthalten:

„Lassen Sie jedes Auge für sich selbst verhandeln und vertrauen Sie keinem Agenten.“
– Viel Lärm um nichts, Akt 2, Szene 1

spot_img

Neueste Intelligenz

spot_img