关键信息 漏洞概述 CVE编号: CVE-2025-50518 漏洞类型: Use-after-free (UAF) 受影响产品: libcoap 受影响版本: 4.3.5 影响组件: coap_pdu.c, coap_delete_pdu_lkid, coap_delete_pdu, coap_send_hdr, coap_send 攻击类型: Local 影响代码执行: true 影响信息泄露: true 漏洞细节 问题描述: 在libcoap库的 函数中存在一个use-after-free漏洞。该问题源于在释放PDU对象后对内存的不当处理,可能导致内存损坏或执行任意代码。 发现方式: 通过使用libFuzzer进行模糊测试时发现。 代码分析 相关代码文件: coap_pdu.c 关键函数: 问题原因: - 当 时,仅检查指针是否为NULL,未验证指向的内存是否有效。 - 多个程序部分持有相同的pdu指针,当一个持有者调用 且引用计数变为0时,会释放pdu内存。 - 其他持有者仍保留相同的指针值(非NULL),但内存已被释放。 - 再次调用 时,由于 条件通过,导致访问已释放内存,引发use-after-free。 关键点 悬挂指针: 指向已释放内存的指针称为悬挂指针。 行为: 访问已释放内存是未定义行为,正是UAF的本质。 参考资料 GitHub链接 发现者: Xu Yaqiao, 安全研究员