CVE-2026-37536miaofng/uds-c项目的特定提交版本中存在严重的栈缓冲区溢出漏洞。该漏洞源于`send_diagnostic_request`函数在处理数据时未对用户输入的`payload_length`进行边界检查,导致向6字节栈缓冲区写入10字节数据。攻击者可通过邻接网络发送特制数据包触发此漏洞,可能导致服务拒绝服务或任意代码执行。
该漏洞位于`miaofng/uds-c`库的`send_diagnostic_request`函数实现中。函数内部定义了一个仅6字节大小的栈缓冲区(`MAX_DIAGNOSTIC_PAYLOAD_SIZE=6`)用于存储诊断数据。在代码逻辑中,程序使用`memcpy`函数将外部输入的payload数据复制到该栈缓冲区偏移量为`1+pid_length`的位置。然而,代码在执行复制操作前,未对`payload_length`进行任何长度校验。根据描述,当`payload_length`为7且`pid_length`为2时,写入总量将达到10字节,超出缓冲区容量4字节。由于攻击向量为邻接网络且无需认证,攻击者可轻易构造恶意UDS诊断数据包发送给目标设备,触发栈溢出并覆盖返回地址,进而可能控制程序执行流程,实现远程代码执行或导致设备崩溃。