Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2020-16899 — CVE-2020-16899 - Microsoft Windows TCP/IP-Schwachstellenerkennungslogik und -Regel | Kitploit
Tools/GitHubGitHub/advanced-threat-research/cve-2020-16899
Paket-Sniffing & AnalyseSchwachstellenanalyseIDS/IPS-UmgehungNetzwerksicherheitEinbruchserkennungDNS-Analyse
GitHubadvanced-threat-research/cve-2020-16899

CVE-2020-16899

CVE-2020-16899 - Microsoft Windows TCP/IP-Schwachstellenerkennungslogik und -Regel

Repository anzeigen
2065vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2020-16899: Microsoft Windows TCP/IP Denial-of-Service-Sicherheitslücke

CVSS Score: 7.5

CVSS Vector: CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:C/C:N/I:N/A:H/E:P/RL:O/RC:C

Überblick

Am 13. Oktober kündigte Microsoft eine kritische Sicherheitslücke im Windows IPv6-Stack an, die es einem Angreifer ermöglicht, manipulierte Pakete zu senden, die auf den neuesten Versionen von Windows 10 und Windows Server 2019 sofort einen BSOD (Blue Screen of Death) verursachen. Diese Sicherheitslücke scheint einem Angreifer zwar keine Codeausführung zu ermöglichen, könnte jedoch für massenhafte Denial-of-Service-Angriffe auf verwundbare Windows-Versionen genutzt werden. Erkennungslogiken für die schwerwiegendere RCE-Version dieser Sicherheitslücke finden Sie unter CVE-2020-16898: „Bad Neighbor“.

Dieses Dokument wurde von McAfee Advanced Threat Research erstellt. Es soll Netzwerkadministratoren und Sicherheitspersonal wertvolle Einblicke bieten, die diese Sicherheitslücke besser verstehen und sich vor Ausnutzung schützen möchten. Die hier erstellte Signatur sollte in Staging-Umgebungen gründlich geprüft und getestet werden, bevor sie in der Produktion eingesetzt wird, und kann von einer spezifischen Anpassung an die Zielumgebung profitieren.

Die hier bereitgestellten Informationen können ohne vorherige Ankündigung geändert werden und werden „WIE BESEHEN“ mit allen Fehlern, ohne Gewährleistung oder Garantie für die Richtigkeit oder Anwendbarkeit der Informationen auf eine bestimmte Situation oder Gegebenheit und zur Nutzung auf eigenes Risiko bereitgestellt. Darüber hinaus können wir keine Leistungs- oder Wirksamkeitsbenchmarks für Signaturen garantieren.

Beschreibung der Sicherheitslücke

Die Sicherheitslücke ist das Ergebnis eines Lesevorgangs außerhalb der Grenzen (Out-of-Bounds Read), der auftreten kann, wenn der Windows IPv6-Stack ICMPv6-Router-Advertisement-Pakete (Typ = 134) verarbeitet, die einen oder mehrere DNSSL-Option-Datensätze (Optionstyp = 31) enthalten. Der Zweck des DNSSL-Datensatzes besteht darin, eine Suchliste mit DNS-Namenssuffixen bereitzustellen, die in seinem letzten Feld enthalten sind. Da diese Suchliste mehrere nullterminierte DNS-Namen hintereinander enthalten kann, kann das Feld (und damit der gesamte Datensatz) stark in der Größe variieren. Um dies zu berücksichtigen, enthält der DNSSL-Option-Datensatz ein eigenes Längenfeld. Da die Länge jedoch in 8-Byte-Schritten gezählt wird, kann mindestens einer der Domainnamen in der Suchliste zusätzliche Null-Auffüllungen aufweisen, um die 8-Byte-Ausrichtung des Datensatzes zu erhalten. Bei der Verarbeitung dieser Nullbytes kann die Sicherheitslücke gefunden werden.

Für jeden Domainnamen in der Suchliste weist der Windows IPv6-Stack einen 256-Byte-Puffer zu. Da RFC 1035 Domainnamen auf 255 Bytes begrenzt, wäre dies normalerweise ausreichend, um einen Domainnamen plus seinen Nullterminator zu enthalten. Der Code, der für das Verarbeiten der nachgestellten Nullbytes am Ende jedes Domainnamens verantwortlich ist, hat jedoch eine Obergrenze, die den verbleibenden Bytes in der Option entspricht, was 256 Bytes überschreiten kann. Das Ergebnis ist, dass der nullverarbeitende Code fälschlicherweise mehr Bytes verbrauchen kann, als für den Puffer zugewiesen wurden, was zu einem Out-of-Bounds Read führt. Falls der Puffer am Ende einer Speicherseite liegt, kann dieser OOB-Read zu einem BSOD führen.

Signatur

Die Suricata-Signatur für diese Sicherheitslücke befindet sich in cve-2020-16899.rules und enthält die folgende Logik:

alert icmp any any -> any any (msg:"Potential CVE-2020-16899 Exploit"; lua:cve-2020-16899.lua; sid:202016899; rev:1;)

Das entsprechende Lua-Skript befindet sich in cve-2020-16899.lua. Es enthält die Logik, die erforderlich ist, um die ICMPv6-Schicht korrekt zu parsen und eine potenzielle Ausnutzung von CVE-2020-16899 zu identifizieren, wie folgt:

Sobald wir den Anfang der ICMPv6-Schicht gefunden haben, testen wir das erste Byte der Schicht, um sicherzustellen, dass es sich um ein Router-Advertisement-ICMPv6-Paket handelt – wenn nicht, beenden wir.

Da Suricata-Primitiven nicht aktualisiert wurden, um die ICMPv6-Optionen zu parsen, springen wir einfach zum 17. Byte der ICMPv6-Schicht, da dort die Optionen beginnen sollten, falls vorhanden (die ersten 16 Bytes sind Felder mit statischer Länge, gemäß RFC 4443). Von dort durchlaufen wir jede Option, bis wir keine Bytes mehr im Paket haben. Für jede Option beginnen wir mit der Inspektion des ersten Bytes, das dem Feld Optionstyp entspricht. Während wir alle Optionen ignorieren, die nicht DNSSL sind, prüfen wir für Optionstyp = 31 (DNSSL), ob die Länge (zweites Byte in der Option) größer oder gleich 35 ist, der Mindestlänge, die erforderlich ist, um die Sicherheitslücke auszulösen:

  • Falls ja, springen wir zum DNS-Suchlistenfeld und berechnen die Länge jedes darin enthaltenen DNS-Namens (einschließlich optionaler Null-Auffüllung). Tests haben ergeben, dass eine Ausnutzung einen DNS-Namen erfordert, der mindestens 264 Bytes lang ist (einschließlich Auffüllung), daher markieren wir alle Pakete, die dieses und die anderen zuvor genannten Kriterien erfüllen.
  • Falls nicht, fahren wir mit der nächsten Option fort. Da die Länge in 8-Byte-Schritten gezählt wird, multiplizieren wir die Länge mit 8 und springen um diese Anzahl von Bytes vorwärts, um zum Anfang der nächsten Option zu gelangen (abzüglich 1, um das bereits verbrauchte Längenbyte zu berücksichtigen).
Tool herunterladen