CVE-2026-37539cannelloni v2.0.0版本中存在严重的缓冲区溢出漏洞。该漏洞源于CAN帧解析过程中的不当处理,具体涉及parser.cpp文件的parseCANFrame函数和decoder.cpp文件的decodeFrame函数。远程攻击者可以通过发送特制的CAN FD帧来触发此漏洞。成功利用可能导致目标服务崩溃(拒绝服务),或者在特定条件下执行任意代码,从而完全控制受影响系统。由于该漏洞无需认证且无需用户交互即可通过网络触发,因此风险极高。
该漏洞的根本原因在于cannelloni对CAN FD(Flexible Data-rate)帧的数据长度和内容边界检查不足。在parser.cpp的parseCANFrame函数中,程序在解析帧头时未能正确验证接收到的数据长度字段是否超出了预设缓冲区的最大限制。随后,在decoder.cpp的decodeFrame函数处理数据时,直接使用了未经验证的长度参数进行内存复制操作,导致堆栈或堆上的缓冲区溢出。攻击者可以通过构造一个恶意CAN FD数据包,其中包含超长的数据载荷,覆盖相邻的内存区域。由于CAN总线协议通常用于关键基础设施或车载网络,且cannelloni作为UDP/IP到CAN的网关,该漏洞允许远程网络攻击者通过发送UDP数据包向CAN总线注入恶意帧,进而实现远程代码执行(RCE)或造成系统崩溃。