CVE-2026-37534Open-SAE-J1939是一款用于处理SAE J1939协议的开源库。该漏洞位于SAE_J1939_Read_Transport_Protocol_Data_Transfer函数中,源于整数下溢错误。攻击者可利用特制的CAN帧序列号触发此漏洞,从而实现任意内存写入。由于该漏洞无需认证且无交互要求,攻击者可通过网络远程利用,严重影响系统的机密性、完整性和可用性,可能导致任意代码执行或系统崩溃。
该漏洞的根源在于Open-SAE-J1939库在处理传输协议数据传输(TP.DT)消息时,对序列号的验证逻辑存在缺陷。具体来说,在SAE_J1939_Read_Transport_Protocol_Data_Transfer函数中,当接收到CAN帧时,程序未正确检查序列号的范围。攻击者可以发送一个特定的序列号,导致计算过程中发生整数下溢。这种下溢会导致用于数据拷贝或缓冲区操作的索引值变为极大的数值,或者计算出错误的内存偏移量。由于程序随后使用该受污染的值作为内存写入的目标地址或长度,攻击者便能够控制写入的内存位置。这种任意内存写入能力允许攻击者覆盖关键的数据结构、函数指针或返回地址,进而绕过现有的安全防护机制,最终实现远程代码执行(RCE)或导致拒绝服务(DoS)。