Eine Schwachstelle im NPM-Paket node-netmask, das in 270.000 Projekten verwendet wird.

Im NPM-Paket node-netmask, das etwa 3 Millionen Downloads pro Woche verzeichnet und als Abhängigkeit in über 270.000 Projekten auf GitHub verwendet wird, wurde eine Schwachstelle (CVE-2021-28918) entdeckt, die es ermöglicht, die Prüfungen zu umgehen, bei denen die Netzwerkmaske zur Bestimmung der Eingliederung in Adressbereiche oder zur Filterung verwendet wird. Das Problem wurde in der Version node-netmask 2.0.0 behoben.

Die Schwachstelle erlaubt es, eine externe IP-Adresse als eine Adresse aus dem internen Netzwerk und umgekehrt zu behandeln. Bei bestimmter Logik der Verwendung des Moduls node-netmask in einer Anwendung können SSRF (Server-Side Request Forgery), RFI (Remote File Inclusion) und LFI (Local File Inclusion) Angriffe durchgeführt werden, um auf Ressourcen im internen Netzwerk zuzugreifen und externe oder lokale Dateien in die Ausführungskette einzufügen. Das Problem liegt darin, dass gemäß der Spezifikation die String-Werte von Adressen, die mit Null beginnen, als oktale Zahlen interpretiert werden sollten. Das Modul 'node-netmask' berücksichtigt dieses Detail jedoch nicht und behandelt sie als dezimale Zahlen.

Ein Angreifer kann beispielsweise einen lokalen Ressourcenzugriff anfordern, indem er den Wert „0177.0.0.1“ angibt, der „127.0.0.1“ entspricht. Das Modul „node-netmask“ jedoch wird die Null ignorieren und „0177.0.0.1“ als „177.0.0.1“ behandeln, was in der Anwendung bei der Evaluierung der Zugriffsregeln nicht ermöglicht, eine Identität mit „127.0.0.1“ festzustellen. Ebenso kann der Angreifer die Adresse „0127.0.0.1“ angeben, die identisch mit „87.0.0.1“ sein sollte, aber im Modul „node-netmask“ als „127.0.0.1“ verarbeitet wird. Gleiches gilt für das Irreführen der Prüfung auf Intranet-Adressen, indem Werte wie „012.0.0.1“ angegeben werden (entspricht „10.0.0.1“, wird aber bei der Prüfung als „12.0.0.1“ verarbeitet).

Forscher, die das Problem entdeckt haben, bezeichnen es als katastrophal und führen mehrere Angriffsszenarien an, wobei die meisten von ihnen jedoch spekulativ erscheinen. Beispielsweise wird über die Möglichkeit gesprochen, eine Anwendung auf Basis von Node.js anzugreifen, die externe Verbindungen herstellt, um Ressourcen basierend auf Parametern oder Eingabedaten anzufordern, jedoch wird die konkrete Anwendung nicht genannt noch detailliert beschrieben. Selbst wenn man Anwendungen findet, die Ressourcen basierend auf eingegebenen IP-Adressen, es ist nicht ganz klar, wie die Schwachstelle praktischen Nutzen bringen kann, ohne sich mit einem lokalen Netzwerk zu verbinden oder Kontrolle über „spiegelnde“ IP-Adressen zu erlangen.

Forscher vermuten lediglich, dass die Besitzer von 87.0.0.1 (Telecom Italia) und 0177.0.0.1 (Brasil Telecom) in der Lage sind, den Zugriff auf 127.0.0.1 zu umgehen. Ein realistischerer Ansatz wäre der Einsatz der Schwachstelle zum Umgehen verschiedener Blocklisten, die auf der Anwendungsseite implementiert sind. Das Problem könnte auch verwendet werden, um die Definition von Intranet-Bereichen im NPM-Modul „private-ip“ auszutauschen.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster