Sie fanden Schwachstellen in den Netzwerkbibliotheken von Rust und Go, die die IP-Validierung verhindern

Vor kurzem Informationen zu Schwachstellen wurden veröffentlicht die in den Standardbibliotheken der Sprachen gefunden wurden Rost und los, welche sind im Zusammenhang mit der falschen Handhabung von IP-Adressen mit Oktalziffern in Adressanalysefunktionen.

Es wird erwähnt, dass eDiese Schwachstellen ermöglichen es Ihnen, Überprüfungen gültiger Adressen zu vermeiden undn Anwendungen, um beispielsweise den Zugriff auf Loopback-Schnittstellenadressen oder Intranet-Subnetze zu organisieren, wenn serverseitige Anforderungs-Spoofing-Angriffe durchgeführt werden.

Die Schwachstellen in diesen beiden Sprachen IP-Adress-Strings haben eine Realisierung in der Spezifikation nullbasiert, da du es bist theoretisch sollten sie als Oktalzahlen interpretiert werden, aber Das Problem, das diese Störungen verursacht, ist, dass viele Bibliotheken dies ignorieren und einfach die Null verwerfen Am Ende behandeln sie den Wert als Dezimalzahl.

Um zum Beispiel zu verstehen, wie IP-Adressen in diesen Bugs interpretiert werden, ist die Zahl 0177 in Oktal 127 in Dezimal und mit der ein Angreifer eine Ressource anfordern kann, die den Wert "0177.0.0.1" angibt, der, da er nicht verwendet wird als Oktal ist die dezimale Schreibweise dafür "127.0.0.1".

Darum im Falle der Verwendung einer der problematischen Bibliotheken, die Anwendung erkennt das Auftreten der Adresse nicht 0177.0.0.1 im Subnetz 127.0.0.1, aber tatsächlich kann beim Senden einer Anfrage die Adresse "0177.0.0.1" aufgerufen werden, die aufgrund von Fehlinterpretationen von den Netzwerkfunktionen als 127.0.0.1 verarbeitet wird. Ebenso kann der Zugriff auf Intranet-Adressen ausgetrickst und verifiziert werden, indem verschiedene Werte angegeben werden, die der Angreifer auf mögliche Ausnutzung auswertet.

Auf der Seite von Rust, es wurde festgestellt, dass das Problem der Standardbibliothek "std :: net" unterliegt und die bereits unter "CVE-2021-29922" katalogisiert ist. Es beschreibt das Der IP-Adressparser dieser Bibliothek verwirft eine Null vor den Werten der Adresse, aber nur, wenn nicht mehr als drei Stellen angegeben wurden, zB wird "0177.0.0.1" als ungültiger Wert interpretiert und als Antwort ein falsches Ergebnis zurückgegeben.

Eine fehlerhafte Validierung der Eingabe von Oktalzeichenfolgen in der rust-lang-Standardbibliothek "net" ermöglicht es nicht authentifizierten Remote-Angreifern, unbestimmte SSRF-, RFI- und LFI-Angriffe auf viele Programme durchzuführen, die von rust-lang std :: net abhängen. Die Oktette der IP-Adresse werden gestrippt, anstatt als gültige IP-Adressen ausgewertet zu werden.

Es wird auch erwähnt, dass Anwendungen, die die std :: net :: IpAddr-Bibliothek verwenden beim Parsen bestimmter Adressen vom Nutzer sind potenziell anfällig für SSRF-Angriffe (serverseitiges Request-Spoofing), RFI (Einbindung von Dateien aus der Ferne) und BIA (Einbindung lokaler Dateien). Ebenso kann ein Angreifer 127.0.026.1 eingeben, was tatsächlich 127.0.22 . ist

Beispielsweise könnte ein Angreifer, der eine IP-Adresse an eine Webanwendung sendet, die auf std :: net :: IpAddr basiert, SSRF durch Eingabe von oktalen Eingabedaten verursachen; Ein Angreifer kann ausnutzbare IP-Adressen senden, wenn das Oktett 3 Ziffern hat, wobei das minimale ausnutzbare Oktett 08 zu Dienstverweigerung führt und das maximal ausnutzbare Oktett 099, das ebenfalls zu Dienstverweigerung führt. 

Wenn Sie mehr über diese Sicherheitsanfälligkeit erfahren möchten in Rust können Sie die Details überprüfen im folgenden Link. Es wird auch erwähnt, dass die Schwachstelle im Rust 1.53.0-Zweig behoben wurde.

Sobald zu dem Problem, das betroffen ist to Go wird erwähnt, dass dies der Standardbibliothek «net» unterliegt und ist bereits unter CVE-2021-29923 gelistet. In der Beschreibung wird erwähnt, dass ermöglicht nicht authentifizierten Remote-Angreifern SSRF-, RFI- und LFI-Angriffe unbestimmt in vielen Programmen, die von golangs eingebauter net.ParseCIDR-Funktion abhängen. Einzelne CIDR-IP-Oktette werden entfernt, anstatt sie als gültige IP-Oktette zu bewerten.

Ein Angreifer könnte beispielsweise den Wert 00000177.0.0.1 übergeben, der, wenn er in der net.ParseCIDR-Funktion aktiviert wird, als 177.0.0.1/24 und nicht als 127.0.0.1/24 geparst wird. Das Problem manifestiert sich auch auf der Kubernetes-Plattform. Die Schwachstelle wurde in Go-Version 1.16.3 und Beta-Version 1.17 behoben.

Sie können mehr darüber erfahren über diese Schwachstelle im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.