SicherheitslĂĽcke: npm-Paket Netmask ignoriert das Oktalsystem in IP-Adressen
Die verbreitete Library wertet Oktalzahlen nicht korrekt aus und interpretiert dadurch unter anderem private Adressen potenziell als öffentlich und umgekehrt.
Sicherheitsforscher haben in einem Blogbeitrag auf eine Schwachstelle in dem npm-Paket Netmask hingewiesen. Letzteres bietet eine Klasse zum Untersuchen und Vergleichen von IPv4-CIDR-Blöcken (Classless Inter-Domain Routing). Allerdings ignoriert sie beim Auswerten der Eingabe führende Nullen, die anzeigen, dass die Adresse als Oktalzahlen angegeben ist.
Die Schwachstelle hat bereits die Nummer CVE-2021-28918, deren zugehörige Beschreibung jedoch beim Schreiben dieser Meldung noch leer war. npm verzeichnet für das Netmask-Paket wöchentlich knapp drei Millionen Downloads. Das zugehörige GitHub-Repository zeigt im Dependency-Graph, dass gut 279.000 Repositories Netmask verwenden.
Eine Null mit viel Gewicht
Bei der Auswertung von IP-Adressen zeigt eine fĂĽhrende 0 ĂĽblicherweise an, dass die Adresse nicht im Dezimalformat, sondern im Oktalsystem angegeben ist. So geht ein ping
zu der vermeintlich externen Adresse 0177.0.0.1
auf den localhost 127.0.0.1
. Der Aufruf in Chrome und anderen Browsern fĂĽhrt ebenfalls auf die interne Adresse.
Das Beispiel zeigt einen der möglichen Angriffsvektoren auf Software, die das Netmask-Paket verwendet: Während die Zieladresse im Browser eine lokale ist, erkennt sie eine JavaScript-Anwendung womöglich als extern. Dasselbe gilt umgekehrt für die Adresse 0127.0.0.1
, die Netmask als lokal interpretiert, die aber im Browser auf die Adresse 87.0.0.1
fĂĽhrt.
Analog dazu sind die privaten Adressbereiche mit den CIDR-Notationen 10.0.0.0/8
, 172.16.0.0/12
und 192.168.0.0/16
durch das Einfügen einer führenden 0 vermeintlich nach wie vor privat, aber beim Auflösen durch den Browser im öffentlichen Adressraum aufgehängt. Auf die Weise lassen sich unter anderem SSRF-Angriffe (Server-side Request Forgery) umsetzen, wenn eine Anwendung Netmask nutzt, um zu entscheiden, ob ein Request erlaubt ist.
Fehler und Korrektur auf höchster Ebene
Nachdem die Sicherheitsforscher das Problem erkannt haben, haben sie den Maintainer des GitHub-Repository kontaktiert, der sich als technischer Direktor (Director of Engineering) bei Netflix entpuppt hat. Er hat sich wohl äußerst reaktionsschnell und kooperativ beim Beheben des Problems gezeigt. Das bedeutet freilich nicht, dass die gut 270.000 Projekte, die auf Netmask setzen, damit fehlerfrei arbeiten.
Weitere Details inklusive Coffeescript-Sourcecode als Fix finden sich im zugehörigen Blogbeitrag. Demnach haben die Forscher das Problem am 16. März entdeckt und am nächsten Tag den Betreiber informiert sowie einen CVE-Eintrag beantragt, der seit dem 19. März existiert.
(rme)