CVE-2026-32708CVE-2026-32708是发现于PX4 Autopilot飞行控制固件中的一个高危安全漏洞。PX4 Autopilot是一款广泛应用于无人机和无人系统的开源飞行控制软件。该漏洞存在于Zenoh uORB(Unified Object Request Broker)订阅者组件中,具体表现为在处理传入的Zenoh消息负载时,直接根据payload长度在栈上分配可变长度数组(VLA),而未进行任何边界检查或限制。攻击者可以利用这一缺陷,通过发送特制的超大Fragmented Zenoh消息,强制系统进行无限制的栈内存分配。当栈空间被耗尽或复制操作超出栈边界时,将导致栈溢出,最终造成Zenoh桥接任务崩溃。由于该组件负责无人机关键飞行数据的传递,攻击成功可能导致无人机失去控制或执行异常飞行动作,对飞行安全构成严重威胁。该漏洞已于1.17.0-rc2版本中修复。
该漏洞的根本原因在于Zenoh uORB订阅者组件在接收远程Zenoh发布者发送的消息时,采用了不安全的栈内存分配方式。具体来说,当接收到Zenoh消息后,订阅者直接根据消息payload的实际长度在栈上分配VLA(Variable Length Array),即栈上可变长数组。这种实现方式存在两个关键问题:首先,VLA的大小完全由攻击者可控的远程消息内容决定,攻击者可以发送任意长度的payload;其次,栈空间通常非常有限(通常只有几KB到几MB),而无限制的VLA分配可能导致栈内存耗尽。攻击者可以通过发送超大的分片(Fragmented)Zenoh消息,触发多次VLA分配和内存复制操作,最终导致栈溢出。栈溢出可能覆盖相邻的栈帧数据、返回地址和其他关键控制结构,攻击者可能利用此漏洞实现代码执行或导致服务拒绝(DoS)。由于Zenoh桥接任务负责无人机系统间的通信,崩溃将导致通信中断,影响无人机的正常飞行控制功能。修复方案包括:在分配前对payload长度进行验证、限制最大分配大小、使用堆分配替代栈VLA分配,以及实施适当的边界检查。