CVE-2026-37532AGL agl-service-can-low-level 17.1.12及之前版本存在堆缓冲区越界读漏洞。该漏洞位于isotp-c库中,因未正确验证CAN单帧的payload_length,导致在处理特制数据时发生越界读取,可能引发服务拒绝或信息泄露。
漏洞位于isotp-c库的receive.c文件第87-89行。在isotp_continue_receive函数中,程序从CAN帧数据的4位半字节中提取payload_length,其理论值为0-15。标准CAN帧总长8字节,载荷从data[1]开始,实际最大可用载荷仅为7字节。由于缺乏边界检查,当payload_length被设置为大于7的值(如15)时,memcpy(message.payload, &data[1], payload_length)操作将读取源缓冲区边界之外的内存。这种堆缓冲区越界读可能导致进程崩溃或泄露内存中的敏感数据。