Ein Angriff auf NPM, der es Ihnen ermöglicht, das Vorhandensein von Paketen in privaten Repositorys festzustellen

In NPM wurde ein Fehler identifiziert, der es Ihnen ermöglicht, die Existenz von Paketen in privaten Repositorys zu ermitteln. Das Problem wird durch unterschiedliche Antwortzeiten verursacht, wenn ein Drittbenutzer, der keinen Zugriff auf das Repository hat, ein vorhandenes und ein nicht vorhandenes Paket anfordert. Wenn für Pakete in privaten Repositories kein Zugriff möglich ist, gibt der Server Registry.npmjs.org einen Fehler mit dem Code „404“ zurück. Wenn jedoch ein Paket mit dem angeforderten Namen vorhanden ist, wird der Fehler mit einer spürbaren Verzögerung ausgegeben. Ein Angreifer kann diese Funktion verwenden, um das Vorhandensein eines Pakets zu ermitteln, indem er Paketnamen in Wörterbüchern nachschlägt.

Die Bestimmung von Paketnamen in privaten Repositorys kann erforderlich sein, um einen Abhängigkeitsmischungsangriff durchzuführen, der die Schnittmenge von Abhängigkeitsnamen in öffentlichen und internen Repositorys manipuliert. Wenn ein Angreifer weiß, welche internen NPM-Pakete sich in Unternehmens-Repositorys befinden, kann er Pakete mit demselben Namen und neueren Versionsnummern in einem öffentlichen NPM-Repository platzieren. Wenn beim Erstellen interner Bibliotheken in den Einstellungen nicht explizit mit ihrem Repository verknüpft werden, berücksichtigt der npm-Paketmanager das öffentliche Repository als Priorität und lädt das vom Angreifer vorbereitete Paket herunter.

GitHub wurde im März über das Problem informiert, weigerte sich jedoch, einen Schutz gegen den Angriff hinzuzufügen, und verwies auf architektonische Einschränkungen. Unternehmen, die private Repositorys verwenden, wird empfohlen, regelmäßig nach sich überschneidenden Namen im öffentlichen Repository zu suchen oder in ihrem Namen Stubs mit Namen zu erstellen, die Paketnamen in privaten Repositorys duplizieren, damit Angreifer ihre Pakete nicht mit überlappenden Namen platzieren können.

Source: opennet.ru

Kommentar hinzufügen