Netmask: Node- und Perl-Pakete parsen IP-Adressen falsch

Ein Team von Forschern hat auf eine Sicherheitslücke (CVE-2021-28918) in dem Node.js-Paket Netmask hingewiesen(öffnet im neuen Fenster) , die bereits seit neun Jahren existiert. Das Paket ist dazu gedacht, IPv4-Adressen in CIDR-Notation(öffnet im neuen Fenster) zu untersuchen und auch mehrere Adressen miteinander zu vergleichen. So soll etwa einfach zwischen internen und externen IP-Adressen unterschieden werden können. Genau das wiederum gelingt nun unter Umständen nicht richtig, wie den Forschern aufgefallen ist, da das Node-Paket Netmask eine Besonderheit der Schreibweise von IP-Adressen nicht beachtet.
So gibt es zusätzlich zur wohl sehr bekannten Dezimalpunktschreibweise von IPv4-Adressen noch die Möglichkeit, diese auch mit Oktalzahlen zu beschreiben, was durch eine führende Null markiert wird. Der Curl-Entwickler Daniel Stenberg weist auf Twitter(öffnet im neuen Fenster) außerdem noch auf die Hexadezimal- und Integer-Schreibweise von IP-Adressen hin.
Unterschiedliche Schreibweisen für IP-Adressen
Im Fall der beschriebenen Sicherheitslücke in dem Netmask-Paket wird die führende Null der Oktal-Schreibweise jedoch schlicht übergangen. Dies führt dazu, dass die IP-Adresse 0127.0.0.1 (Oktal) als interne Adresse 127.0.0.1 (Dezimal) für den Localhost interpretiert. Dabei handelt es sich korrekterweise aber um die externe Adresse 87.0.0.1 (Dezimal). Ähnliches gilt für 0177.0.0.1 (Oktal), die als externe Adresse 177.0.0.1 (Dezimal) interpretiert wird, jedoch 127.0.0.1 (Dezimal) ist.
In der Ankündigung der Lücke heißt es: "Wenn der Browser Oktal-Literale erkennt, eine Nodejs-Anwendung aber nicht, können Benutzer alle Arten von bösartigen URLs übermitteln, die intern zu sein scheinen, aber in Wirklichkeit zu entfernten Dateien führen. Auf der anderen Seite können Benutzer auch URLs übermitteln, die öffentlich zu sein scheinen, aber in Wirklichkeit sehr privat sind!" . Unter Ausnutzung dieser speziellen Lücken ließen sich also möglicherweise SSRF(öffnet im neuen Fenster) -Angriffe durchführen.
Auch Perl-Pakete betroffen
Wie der Entwickler Dave Rolsky darüber hinaus in seinem Blog(öffnet im neuen Fenster) schreibt, sei er beim Recherchieren nach der Veröffentlichung der Lücke in dem NPM-Paket auf folgende Beschreibung auf Github(öffnet im neuen Fenster) gestoßen: "Dieses Modul ist stark vom Perl-Modul Net::Netmask inspiriert" . Rolsky untersuchte daraufhin auch dieses Perl-Paket, was die beschriebene Sicherheitslücke ebenfalls aufweist. Hinzu kommen einige weitere Perl-Pakete mit der gleichen Lücke.
Sowohl die Lücke im NPM- als auch im Perl-Paket wurden schnell behoben und es stehen aktualisierte Versionen bereit. Das NPM-Paket Netmask wird darüber hinaus jedoch zumindest auf Github von rund 280.000 anderen Projekten als Abhängigkeit genutzt und außerdem etwa 3 Millionen Mal wöchentlich von NPM heruntergeladen. Die vielen Nutzer und Anwendungen, die auf Netmask aufbauen, müssen ihre Abhängigkeiten nun aktualisieren.



