mbanyamer/CVE-2026-32707-PX4-Autopilot-tattu_can-Stack-Buffer-Overflow-DoS-
GitHub: mbanyamer/CVE-2026-32707-PX4-Autopilot-tattu_can-Stack-Buffer-Overflow-DoS-
针对 PX4-Autopilot tattu_can 驱动栈缓冲区溢出漏洞(CVE-2026-32707)的概念验证利用工具,可通过注入 CAN 帧触发拒绝服务。
Stars: 0 | Forks: 0
[](https://nvd.nist.gov/vuln/detail/CVE-2026-32707)
[-orange)](https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
[](https://cwe.mitre.org/data/definitions/121.html)
[](https://www.python.org/)
[](https://kernel.org/)
[](LICENSE)
[](https://github.com/mbanyamer)
# CVE-2026-32707 - PX4-Autopilot tattu_can 栈缓冲区溢出 (DoS)
```
╔════════════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ██████╗ █████╗ ███╗ ██╗██╗ ██╗ █████╗ ███╗ ███╗███████╗██████╗ ║
║ ██╔══██╗██╔══██╗████╗ ██║╚██╗ ██╔╝██╔══██╗████╗ ████║██╔════╝██╔══██╗ ║
║ ██████╔╝███████║██╔██╗ ██║ ╚████╔╝ ███████║██╔████╔██║█████╗ ██████╔╝ ║
║ ██╔══██╗██╔══██║██║╚██╗██║ ╚██╔╝ ██╔══██║██║╚██╔╝██║██╔══╝ ██╔══██╗ ║
║ ██████╔╝██║ ██║██║ ╚████║ ██║ ██║ ██║██║ ╚═╝ ██║███████╗██║ ██║ ║
║ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ║
║ ║
║ [ 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` 结构时,驱动程序执行了无界的 `memcpy()` 操作,而没有根据缓冲区大小(48 字节)检查累计偏移量。能够将 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)
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` 驱动的 PX4-Autopilot 版本 ≤ 1.17.0-rc1 - **已修复**:PX4-Autopilot ≥ 1.17.0-rc2(提交 [`3f04b7a`](https://github.com/PX4/PX4-Autopilot/commit/3f04b7a95ace454f228b393310c4915991b85163)) ## 环境要求 - **Python 3** 及 `python-can` 库 - 带有 SocketCAN 支持的 **Linux**(大多数发行版) - **Root 权限**(`CAP_NET_RAW`)用于发送原始 CAN 帧 - 一个 CAN 接口(物理接口 `can0` 或虚拟接口 `vcan0`) ## 安装说明 ``` # 克隆 repository 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 接口进行 Exploit(用于模拟/测试)
sudo python3 exploit.py vcan0
# 通过物理 CAN 总线进行 Exploit
sudo python3 exploit.py can0
```
## 漏洞利用原理
1. **传输起始帧** – 第一个 CAN 帧 (DLC=8) 的最后一个字节被设置为 `0x80`,这会向驱动程序发出信号,开始组装新的 `Tattu12SBatteryMessage`,并将前 5 个字节复制到栈缓冲区中。
2. **溢出帧** – 发送随后的七个 CAN 帧(每个 DLC=8)。驱动程序将每帧的 7 个字节 (DLC-1) 复制到偏移量 5 开始的缓冲区中。在第 7 帧之后,累计偏移量超过了 48 字节。
3. **最终触发** – 额外的一帧触发了最后一次越过缓冲区边界的 `memcpy()` 写入,从而破坏了栈帧。
4. **结果** – PX4 进程崩溃(段错误或硬件错误)。在真实的飞行控制器上,这将导致拒绝服务(失去控制)。
## 预期输出
```
[*] 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.
```
## 缓解措施
- **更新** PX4-Autopilot 至 **1.17.0-rc2** 或更高版本。
- 如果不需要,**禁用** `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;
}
```
## 参考资料
- [GitHub 安全公告 GHSA-wxwm-xmx9-hr32](https://github.com/PX4/PX4-Autopilot/security/advisories/GHSA-wxwm-xmx9-hr32)
- [修复提交 `3f04b7a`](https://github.com/PX4/PX4-Autopilot/commit/3f04b7a95ace454f228b393310c4915991b85163)
- [存在漏洞的源文件 (修复前)](https://github.com/PX4/PX4-Autopilot/blob/bf4fac7e61413ef35959505b337c1168d0fd76bb/src/drivers/tattu_can/TattuCan.cpp)
- [CVE-2026-32707 条目 (NVD)](https://nvd.nist.gov/vuln/detail/CVE-2026-32707)
## 致谢
- **发现者及 PoC 作者** – Mohammed Idrees Banyamer
- **国家** – 约旦 🇯🇴
- **Instagram** – [@banyamer_security](https://instagram.com/banyamer_security)
- **GitHub** – [mbanyamer](https://github.com/mbanyamer)
## 免责声明
本概念验证代码**仅用于教育和安全测试目的**。请仅在您拥有或已获得明确测试授权的系统上使用。作者不对因滥用此代码造成的任何损害承担责任。
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` 驱动的 PX4-Autopilot 版本 ≤ 1.17.0-rc1 - **已修复**:PX4-Autopilot ≥ 1.17.0-rc2(提交 [`3f04b7a`](https://github.com/PX4/PX4-Autopilot/commit/3f04b7a95ace454f228b393310c4915991b85163)) ## 环境要求 - **Python 3** 及 `python-can` 库 - 带有 SocketCAN 支持的 **Linux**(大多数发行版) - **Root 权限**(`CAP_NET_RAW`)用于发送原始 CAN 帧 - 一个 CAN 接口(物理接口 `can0` 或虚拟接口 `vcan0`) ## 安装说明 ``` # 克隆 repository 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总线, CVE-2026-32707, CVSS 7.5, CWE-121, DoS, PoC, PX4-Autopilot, Python, tattu_can, 拒绝服务, 无人机, 无人机安全, 无后门, 暴力破解, 栈缓冲区溢出, 漏洞分析, 漏洞复现, 网络安全, 路径探测, 逆向工具, 隐私保护, 飞控系统