CVE-2025-65495CVE-2025-65495是libcoap 4.3.5版本中的一个高危拒绝服务漏洞。该漏洞位于src/coap_openssl.c文件的tls_verify_call_back()函数中,由于整数符号错误(Integer signedness error)导致。攻击者可以通过构造恶意的TLS证书触发该漏洞,当i2d_X509()函数处理恶意证书时返回-1,该返回值被错误地用作malloc()的大小参数。由于-1被无符号解释时变成一个巨大的正值,可能导致内存分配失败或尝试分配过大的内存块,从而引发拒绝服务条件。此漏洞无需认证即可远程利用,对使用libcoap进行TLS通信的应用程序构成严重威胁。
漏洞根源在于tls_verify_call_back()函数对i2d_X509()返回值的处理不当。i2d_X509()是OpenSSL库函数,用于将X509证书对象转换为DER编码格式,正常返回编码后的字节数,出错时返回-1。当函数返回-1时,代码将其作为malloc()的大小参数使用。由于malloc()的参数类型为size_t(无符号类型),-1被隐式转换为无符号整数,变成4294967295(32位系统)或更大的值。这导致两种可能的攻击场景:1)尝试分配巨大的内存块导致系统资源耗尽;2)内存分配失败后程序未正确处理错误状态,继续执行导致崩溃。攻击者只需向目标服务器发送包含恶意TLS证书的连接请求即可触发漏洞,无需任何认证或用户交互。