In NPM wurde ein Mangel festgestellt, der es ermöglicht, die Existenz von Paketen in geschlossenen Repositories zu ermitteln. Das Problem entsteht durch unterschiedliche Reaktionszeiten, wenn ein externer Benutzer, der keinen Zugriff auf das Repository hat, nach einem bestehenden oder nicht existierenden Paket fragt. Bei fehlendem Zugriff auf alle Pakete in privaten Repositories gibt der Server registry.npmjs.org einen Fehler mit dem Code â404â zurĂŒck, aber im Fall der Existenz eines Pakets mit dem angeforderten Namen wird der Fehler mit spĂŒrbarer Verzögerung ausgegeben. Ein Angreifer kann dieses Merkmal nutzen, um die VerfĂŒgbarkeit von Paketen bei der Namenssuche anhand von WörterbĂŒchern zu bestimmen.
Die Bestimmung von Paketnamen in geschlossenen Repositories kann fĂŒr einen Angriff durch das Mischen von AbhĂ€ngigkeiten erforderlich sein, der das Ăberlappen von AbhĂ€ngigkeiten in öffentlichen und internen Repositories manipuliert. Wenn der Angreifer weiĂ, welche internen NPM-Pakete in den Unternehmensrepositories vorhanden sind, kann er Pakete mit denselben Namen und neueren Versionsnummern in einem öffentlichen NPM-Repository veröffentlichen. Wenn interne Bibliotheken bei der Erstellung nicht explizit auf ihr Repository festgelegt werden, wird der Paketmanager npm das öffentliche Repository als prioritĂ€r betrachten und das vom Angreifer vorbereitete Paket herunterladen.
GitHub wurde im MĂ€rz ĂŒber das Problem informiert, lehnte jedoch ab, einen Schutz gegen den Angriff hinzuzufĂŒgen, und verwies auf architektonische EinschrĂ€nkungen. Unternehmen, die private Repositories verwenden, wird empfohlen, regelmĂ€Ăig nach ĂŒberschneidenden Namen im öffentlichen Repository zu suchen oder unter ihrem Namen Platzhalter mit Namen zu erstellen, die die Namen von Paketen in privaten Repositories wiederholen, damit Angreifer ihre Pakete mit ĂŒberschneidenden Namen nicht hochladen können.
Quelle: opennet.ru
