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
dnsmasq-cve-2026 — Automatisiertes Tool zur Verifizierung von Schwachstellen für 6 dnsmasq-CVEs (CVE-2026-2291, 4890, 4891, 4892, 4893, 5172) | Kitploit
Tools/GitHubGitHub/jianrongxiao-linksys/dnsmasq-cve-2026
SchwachstellenanalyseExploitationFuzzingNetzwerksicherheitPenetrationstestsBinäranalyseDNS-Analyse
GitHubjianrongxiao-linksys/dnsmasq-cve-2026

dnsmasq-cve-2026

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Automatisiertes Tool zur Verifizierung von Schwachstellen für 6 dnsmasq-CVEs (CVE-2026-2291, 4890, 4891, 4892, 4893, 5172)

Repository anzeigen
vor 2 MonatenNoch nicht geprüft

dnsmasq-CVE-2026-QA-Verifizierungstool

Automatisiertes Blackbox-Tool zur Verifizierung von 6 dnsmasq-Schwachstellen (Mai 2026). Sendet Angriffspakete an ein aktives DUT und meldet PASS/FAIL – ohne Zugriff auf den Quellcode.

Schnellstart

root@kitploit:~
# Set DUT DNS to your laptop's WAN IP via GUI first, then:
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASS>

# Example:
sudo python3 dnsmasq_cve_verify.py --laptop 10.0.0.211 --dut 192.168.1.1 --dut-pass '12345Asdf@'

Getestete CVEs

CVECVSSTypAngriffsvektorBetroffenes Feature
CVE-2026-22919.2Heap-PufferüberlaufRemoteextract_name() – immer aktiv
CVE-2026-51727.5OOB-Read / AbsturzRemoteextract_addresses() – immer aktiv
CVE-2026-48907.5Endlosschleifen-DoSRemoteNSEC-Bitmap-Parsing (--dnssec)
CVE-2026-48915.3Heap-OOB-ReadRemoteRRSIG-Validierung (--dnssec)
CVE-2026-48928.4Heap-Überlauf → RootLokal/BenachbartDHCPv6-CLID (--dhcp-script + DHCPv6)
CVE-2026-48935.3ValidierungsumgehungRemoteECS-Quellprüfung (--add-subnet)

So funktioniert jeder Test

CVE-2026-2291 (Kritisch – Heap-Überlauf in extract_name)

Grundursache: union bigname deklariert char name[MAXDNAME], aber escapte Zeichen können einen Namen auf 2*MAXDNAME+1 Bytes erweitern, was einen Heap-Überlauf verursacht.

Testmethode: Sendet DNS-Anfragen mit Domainnamen, die Zeichen mit hohem Bit (0x80+) enthalten, die intern als \DDD escapt werden (4 Bytes pro Eingabebyte). Wenn dnsmasq abstürzt oder nicht mehr antwortet, ist es verwundbar.

Verhalten nach dem Patch: Lehnt überdimensionierte Namen ordnungsgemäß ab (FORMERR/REFUSED) oder verwendet einen vergrößerten Puffer.

CVE-2026-5172 (Hoch – OOB-Read in extract_addresses)

Grundursache: Ein verfälschtes rdlen-Feld lässt extract_name() den Zeiger über das Record-Ende hinaus verschieben. Ein Underflow der verbleibenden Bytes erzeugt einen riesigen Wert → massiver OOB-Read → Absturz.

Testmethode: Sendet DNS-Antworten mit CNAME-Records, bei denen rdlen kleiner ist als der tatsächlich kodierte Name. Wenn dnsmasq abstürzt, ist es verwundbar.

Verhalten nach dem Patch: Validiert, dass der Zeiger nach extract_name() innerhalb der deklarierten rdlen-Grenze bleibt.

CVE-2026-4890 (Hoch – DNSSEC-NSEC-Endlosschleife)

Grundursache: Das Parsen der NSEC-Typ-Bitmap erhöht den Zeiger um p[1] statt um p[1]+2 (fehlende Fenster-Header-Größe). Bei bitmap_length=0 bewegt sich der Zeiger nie weiter → Endlosschleife.

Testmethode: Sendet einen präparierten NSEC-Record mit window=0, bitmap_length=0. Wenn dnsmasq auf ALLE Anfragen nicht mehr reagiert (hängt, stürzt nicht ab), ist es verwundbar. Vor der RRSIG-Validierung ausnutzbar.

Verhalten nach dem Patch: Erhöht um p[1]+2 und überspringt Bitmaps mit Länge null.

CVE-2026-4891 (Mittel – RRSIG-Heap-OOB-Read)

Grundursache: rdlen in RRSIG wird nicht gegen die Mindestgröße (18 + Signer-Name) validiert. Die berechnete Signaturlänge läuft negativ unter → wird als riesig behandelt → OOB-Read.

Testmethode: Sendet RRSIG-Records mit rdlen=10 (weit unter dem Minimum von 31+ Bytes). Absturz = verwundbar.

Verhalten nach dem Patch: Validiert rdlen >= fixed_fields + signer_name_length, bevor die Signaturlänge berechnet wird.

CVE-2026-4892 (Hoch – lokaler Root über DHCPv6-CLID)

Grundursache: DHCPv6-CLIDs (bis zu 65535 Bytes) werden per sprintf("%.2x") hex-kodiert in daemon->packet (5131 Bytes) geschrieben. Eine 3000-Byte-CLID → 6000-Byte-Hex-String → Überlauf. Der Helper-Prozess läuft als Root.

Testmethode: Sendet ein DHCPv6-SOLICIT mit 3000-Byte-Client-Identifier. Erfordert IPv6-Nachbarschaft und konfiguriertes --dhcp-script. Absturz des Helpers = verwundbar.

Verhalten nach dem Patch: Kürzt oder validiert die CLID-Länge vor der Hex-Kodierung.

Hinweis: Einige Builds werden mit -DNO_DHCP6 kompiliert und sind von dieser CVE NICHT betroffen.

CVE-2026-4893 (Mittel – Umgehung der ECS-Quellvalidierung)

Grundursache: process_reply() übergibt die OPT-Record-Länge (~23 Bytes) statt der vollen Paketlänge an check_source(). Alle Grenzwertprüfungen schlagen fehl → die Funktion gibt immer 1 (gültig) zurück.

Testmethode: Sendet DNS-Anfragen mit der EDNS-Client-Subnet-Option, die gefälschte Quellpräfixe enthält. Wenn dnsmasq ECS ohne Validierung zurücksendet, ist es verwundbar.

Verhalten nach dem Patch: Übergibt die volle Paketlänge an check_source(), wodurch ordnungsgemäße Grenzwertprüfungen gemäß RFC 7871 Abschnitt 9.2 ermöglicht werden.

Behebung

Upgrade auf dnsmasq 2.92rel2 (empfohlen)

  • Quelle: https://thekelleys.org.uk/dnsmasq/dnsmasq-2.92rel2.tar.xz
  • Upstream-Patches: https://thekelleys.org.uk/dnsmasq/CVE/

Automatisiertes Fehlerverifikationstool (dnsmasq_cve_verify.py)

Das primäre QA-Tool. Läuft auf dem Test-Laptop, sendet Angriffspakete an das DUT und meldet für jede CVE ein eindeutiges PASS/FAIL. Über den schreibgeschützten SSH-Zugriff zur Zustandsprüfung hinaus sind keine Änderungen am DUT erforderlich.

Netzwerktopologie

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│                        Testing Laptop                                │
│                                                                      │
│   LAN interface                   WAN interface                      │
│   <LAPTOP_LAN_IP>                 <LAPTOP_WAN_IP>                   │
│        │                               │                            │
│        │                          ┌────┴──────────────┐             │
│        │                          │ Malicious DNS     │             │
│        │                          │ Server (port 53)  │             │
│        │                          └────┬──────────────┘             │
│        │                               │                            │
└────────┼───────────────────────────────┼────────────────────────────┘
         │ LAN subnet                    │ WAN subnet
         │                               │
┌────────┼───────────────────────────────┼────────────────────────────┐
│        │                               │                            │
│   LAN: <DUT_LAN_IP>              WAN: <DUT_WAN_IP>                  │
│   (LAN gateway)                   (WAN uplink)                      │
│                                                                      │
│              DUT (Linksys Router)                                    │
│              dnsmasq (any version < 2.92rel2)                        │
│                                                                      │
│   resolv-file=/etc/resolv.conf                                      │
│   → nameserver <LAPTOP_WAN_IP>  ← set via GUI, forwards to us      │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

Datenfluss:

  1. Tool sendet DNS-Anfrage an die DUT-LAN-IP (Port 53)
  2. Das dnsmasq des DUT kann nicht lokal auflösen → leitet upstream an LAPTOP_WAN_IP weiter
  3. Unser bösartiger Server auf der WAN-Schnittstelle antwortet mit der Exploit-Payload
  4. Das dnsmasq des DUT verarbeitet die bösartige Antwort → Absturz/Hänger/überlebt
  5. Tool prüft den DUT-Zustand per SSH (schreibgeschützt)

Beispielaufbau (Ihre IPs weichen ab):

RolleIP (Beispiel)
Laptop-LAN192.168.1.254
Laptop-WAN10.0.0.211
DUT-LAN192.168.1.1
DUT-WAN10.0.0.214

Die wichtigste Anforderung: Laptop-WAN-IP und DUT-WAN-IP müssen im selben Subnetz liegen, damit das DUT den Laptop als Upstream-DNS-Server erreichen kann.

So funktioniert es

root@kitploit:~
┌──────────┐     ┌───────────┐     ┌──────────────────┐     ┌──────────┐
│  SETUP   │ ──► │  TRIGGER  │ ──► │  STATE INSPECT   │ ──► │  VERDICT │
│          │     │           │     │                  │     │          │
│ Start    │     │ Send DNS  │     │ SSH to DUT:      │     │ PASS:    │
│ malicious│     │ query to  │     │ - pidof dnsmasq  │     │ survived │
│ DNS srv  │     │ DUT→DUT   │     │ - PID changed?   │     │          │
│ on WAN   │     │ forwards  │     │ - dmesg crash?   │     │ FAIL:    │
│ interface│     │ to us→we  │     │ - /var/log/msg   │     │ crashed/ │
│ (10.0.0. │     │ reply w/  │     │                  │     │ hung     │
│  211:53) │     │ exploit   │     │ Liveness query   │     │          │
│          │     │ payload   │     │ (version.bind)   │     │          │
└──────────┘     └───────────┘     └──────────────────┘     └──────────┘

HINWEIS: Das Tool ändert KEINE DUT-Einstellungen. Der Benutzer muss das DNS über die GUI auf 10.0.0.211 setzen.

QA-Testverfahren

Voraussetzungen

  • Test-Laptop mit zwei Netzwerkschnittstellen (LAN + WAN)
  • Python 3.6+ mit installiertem paramiko (pip install paramiko)
  • SSH-Zugang zum DUT (Root-Zugangsdaten)
  • DUT-Admin-GUI erreichbar

Schritt 1: Physische Verbindung

Verbinden Sie den Test-Laptop mit zwei Kabeln mit dem DUT:

Laptop-PortVerbunden mitZweck
LAN-PortDUT-LAN-PortSSH-Zugang + DNS-Anfragen an das DUT senden
WAN-PortDUT-WAN-Subnetz (z. B. Upstream-Switch/Modem-Port)Als Upstream-DNS-Server fungieren

Notieren Sie nach dem Verbinden die IPs Ihres Laptops:

root@kitploit:~
# Find your IPs
ip addr show | grep "inet "
# Example output:
#   inet 192.168.1.254/24 ...  ← this is your LAN IP
#   inet 10.0.0.211/24 ...     ← this is your WAN IP (use this for --laptop)

Schritt 2: DUT-DNS über die GUI auf den Laptop einstellen

  1. Öffnen Sie einen Browser und rufen Sie die DUT-Adminseite auf:
    • z. B. http://192.168.1.1 oder http://myrouter.local
  2. Melden Sie sich mit den Admin-Zugangsdaten an
  3. Navigieren Sie zu: Konnektivität → Interneteinstellungen → Bearbeiten (neben IPv4)
  4. Wählen Sie unter DNS: Statisches DNS
  5. Setzen Sie DNS 1 auf die WAN-IP Ihres Laptops (z. B. 10.0.0.211)
  6. Klicken Sie auf Übernehmen
  7. Warten Sie 5–10 Sekunden, bis die Einstellungen wirksam werden

Schritt 3: Tool ausführen

root@kitploit:~
cd /path/to/dnsmasq-cve-2026/

# Run all 6 CVE tests:
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASSWORD>

# Example:
sudo python3 dnsmasq_cve_verify.py --laptop 10.0.0.211 --dut 192.168.1.1 --dut-pass '12345Asdf@'

Das Tool wird:

  1. Per SSH mit dem DUT verbinden (schreibgeschützt)
  2. Einen bösartigen DNS-Server auf der WAN-IP Ihres Laptops starten
  3. Überprüfen, ob das DUT DNS-Anfragen an ihn weiterleitet
  4. Exploit-Payloads für jede CVE senden
  5. Prüfen, ob dnsmasq abgestürzt ist oder hängt
  6. PASS/FAIL je CVE melden

Schritt 4: Ergebnisse auswerten

  • PASS = DUT ist sicher (Feature nicht aktiv oder Angriff überstanden)
  • FAIL = dnsmasq ist abgestürzt oder hängt (verwundbar!)
  • ERROR = Verbindung fehlgeschlagen oder DUT leitet nicht weiter

Schritt 5: DUT-DNS wiederherstellen

  1. Gehen Sie zurück zur DUT-Admin-GUI
  2. Konnektivität → Interneteinstellungen → Bearbeiten
  3. Wählen Sie unter DNS: Automatisch (vom ISP) oder entfernen Sie den statischen Eintrag
  4. Klicken Sie auf Übernehmen

Fehlerbehebung


Testergebnisse (31.05.2026)

dnsmasq-2.78-Plattform (GESAMT: PASS)

dnsmasq-2.90-Plattform (GESAMT: PASS)

Fazit

Alle getesteten Linksys-Router sind in ihren Produktions-Build-Konfigurationen für keine der 6 CVEs praktisch ausnutzbar. Die gefährlichen Funktionen (DNSSEC, DHCPv6 über dnsmasq) sind entweder nicht kompiliert oder nicht konfiguriert. Patches werden dennoch als Verteidigung in der Tiefe empfohlen.

Erwartete Ergebnisse

Vor dem Fix (dnsmasq 2.78, Build ohne DNSSEC):

Vor dem Fix (dnsmasq 2.90 mit aktiviertem DNSSEC):

Nach dem Fix (dnsmasq 2.92rel2 oder zurückportierte Patches angewendet): Alle 6 CVEs → PASS

Anforderungen

  • Python 3.6+ mit paramiko (pip install paramiko)
  • Root/sudo auf dem Laptop (um DNS auf Port 53 zu binden)
  • SSH-Zugang zum DUT (schreibgeschützt – für Prozesszustandsprüfungen)
  • Laptop mit dem LAN des DUT verbunden (192.168.1.x-Netzwerk)

Optionen-Referenz


Weitere Tools

Remote-Blackbox-Tester (test_dnsmasq_cve_remote.py)

Nur ein leichter Versionscheck – fragt version.bind ab, um festzustellen, ob die dnsmasq-Version unter dem Fix liegt. Kein SSH, kein Setup, keine Exploit-Payloads.

root@kitploit:~
python3 test_dnsmasq_cve_remote.py 192.168.1.1

On-Device-Skript (test_dnsmasq_cve_on_device.sh)

Läuft direkt auf dem DUT per SSH/serieller Verbindung. Prüft die Binärversion und Kompilierungsoptionen.

root@kitploit:~
scp test_dnsmasq_cve_on_device.sh [email protected]:/tmp/
ssh [email protected] "sh /tmp/test_dnsmasq_cve_on_device.sh"

Bösartiger DNS-Server (malicious_dns_server.py)

Eigenständiger Exploit-Server für manuelle Tests. Starten Sie ihn, richten Sie das Upstream-DNS des DUT darauf aus und lösen Sie dann Anfragen an crash-5172.evil.test, crash-2291.evil.test usw. aus.

root@kitploit:~
sudo python3 malicious_dns_server.py --port 53
# Then on DUT: configure upstream → this host
# Then trigger: dig @192.168.1.1 crash-5172.evil.test

Verifizierung nach dem Fix

Führen Sie nach dem Anwenden von Patches und dem Flashen neuer Firmware Folgendes erneut aus:

root@kitploit:~
sudo python3 dnsmasq_cve_verify.py --laptop <YOUR_WAN_IP> --dut <DUT_LAN_IP> --dut-pass <SSH_PASS>
# Expected: all 6 PASS

Zusammenfassung der Anforderungen

Referenzen

  • ISPreview: https://www.ispreview.co.uk/index.php/2026/05/string-of-dnsmasq-vulnerabilities-threatens-uk-broadband-routers.html
  • Help Net Security: https://www.helpnetsecurity.com/2026/05/12/dnsmasq-vulnerabilities-cve/
  • Upstream-Patches: https://thekelleys.org.uk/dnsmasq/CVE/
  • dnsmasq-Changelog: https://thekelleys.org.uk/dnsmasq/CHANGELOG
Tool herunterladen
ProblemLösung
Das DUT leitet keine Anfragen an uns weiterÜberprüfen Sie, ob Schritt 2 korrekt ausgeführt wurde. Prüfen Sie, ob die Laptop-WAN-IP mit dem übereinstimmt, was Sie in der GUI eingegeben haben.
Verbindung zum DUT nicht möglichÜberprüfen Sie die SSH-Zugangsdaten. Versuchen Sie manuell: ssh [email protected].
Port 53 kann nicht gebunden werdenFühren Sie das Tool mit sudo aus. Oder verwenden Sie --dns-port 5353 (erfordert manuelle DUT-Konfiguration).
Version: unknownDas DUT hat dnsmasq möglicherweise nicht im Standardpfad. Das Tool testet trotzdem korrekt.
CVEErgebnisGrund
CVE-2026-2291PASSDNSSEC nicht kompiliert
CVE-2026-4890PASSDNSSEC nicht kompiliert
CVE-2026-4891PASSDNSSEC nicht kompiliert
CVE-2026-4892PASSdnsmasq bedient kein DHCPv6 (separater DHCPv6-Server verwendet)
CVE-2026-4893PASSNur Logikfehler – kein Absturz
CVE-2026-5172PASSExploit überstanden (verwundbarer Codepfad nicht in 2.78)
CVEErgebnisGrund
CVE-2026-2291PASSDNSSEC nicht kompiliert
CVE-2026-4890PASSDNSSEC nicht kompiliert
CVE-2026-4891PASSDNSSEC nicht kompiliert
CVE-2026-4892PASSDHCPv6 nicht kompiliert
CVE-2026-4893PASSNur Logikfehler – kein Absturz
CVE-2026-5172PASSExploit-Varianten überstanden
CVEErgebnisGrund
CVE-2026-2291PASSDNSSEC nicht kompiliert – nicht ausnutzbar
CVE-2026-4890PASSDNSSEC nicht kompiliert – nicht ausnutzbar
CVE-2026-4891PASSDNSSEC nicht kompiliert – nicht ausnutzbar
CVE-2026-4892PASS/FAILDHCPv6 kompiliert + dhcp-script aktiv
CVE-2026-4893PASSNur Logikfehler – kein Absturz (nur versionsbasiert)
CVE-2026-5172PASSblockdata_expand-Pfad nicht in 2.78
CVEErgebnisGrund
CVE-2026-2291FAILHeap-Überlauf über escapte Namen
CVE-2026-4890FAILEndlosschleife (hängt)
CVE-2026-4891FAILAbsturz durch RRSIG-OOB-Read
CVE-2026-4892PASS/FAILHängt von DHCPv6 + Script-Konfiguration ab
CVE-2026-4893PASSNur Logikfehler – kein Absturz
CVE-2026-5172FAILOOB-Read durch verfälschtes rdlen
FlagStandardBeschreibung
--laptop(erforderlich)WAN-IP des Laptops (bindet den bösartigen DNS-Server hier)
--dut192.168.1.1LAN-IP des DUT (SSH- und DNS-Anfragen werden hierhin gesendet)
--dut-userrootSSH-Benutzername des DUT
--dut-pass(wird abgefragt)SSH-Passwort des DUT
--dns-port53Port für den bösartigen DNS-Server
--cvealle 6Bestimmte CVE(s) zum Testen (wiederholbar)
ToolPythonRootSSHNetzwerk
dnsmasq_cve_verify.py3.6+ paramikoJa (Port 53)Ja (schreibgeschützt)LAN + WAN zum DUT
test_dnsmasq_cve_remote.py3.6+ stdlibNeinNeinUDP 53 zum DUT
test_dnsmasq_cve_on_device.shN/A (Shell)NeinAuf dem DUT ausführenN/A
malicious_dns_server.py3.6+ stdlibJa (Port 53)NeinDUT leitet an uns weiter