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

CVE-2026-40892 PJSIP栈缓冲区溢出漏洞

披露日期: 2026-04-21

漏洞信息

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

相关标签

栈缓冲区溢出PJSIP远程代码执行RCECVSS-9.8

漏洞概述

PJSIP是一个开源多媒体通信库。在其2.16及更早版本中,存在一个严重的栈缓冲区溢出漏洞。该漏洞触发于`pjsip_auth_create_digest2()`函数处理预计算摘要凭证时。由于未对输入长度进行校验,攻击者可通过发送特制的数据包导致缓冲区溢出。由于此漏洞无需认证且利用难度低,攻击者可借此远程执行任意代码或导致服务拒绝,对系统安全构成极高威胁。

技术细节

漏洞根源在于PJSIP库中`pjsip_auth_create_digest2()`函数处理预计算摘要凭证时的逻辑缺陷。当系统配置使用`PJSIP_CRED_DATA_DIGEST`时,该函数被调用以验证身份。代码直接引用`cred_info->data.slen`作为长度参数,将用户提供的凭证数据拷贝至固定大小为128字节的栈缓冲区`ha1`中。由于缺乏必要的边界检查,一旦输入数据的长度超过128字节,就会引发栈缓冲区溢出。攻击者可以通过精心构造恶意SIP消息或响应数据,利用此溢出覆盖栈上的返回地址或关键函数指针。鉴于CVSS评分为9.8,该漏洞允许未经身份验证的远程攻击者通过发起特制的网络请求,轻易导致目标服务崩溃,甚至可能劫持程序执行流以获取系统最高权限,造成严重的信息泄露和数据破坏。

攻击链分析

STEP 1
侦察
攻击者扫描网络,识别使用PJSIP库且版本低于或等于2.16的目标系统(如VoIP服务器、软电话等)。
STEP 2
构造攻击载荷
攻击者构造一个恶意的SIP消息或认证响应,其中包含超长的预计算摘要凭证数据(长度大于128字节)。
STEP 3
发送恶意数据
攻击者通过网络将包含超长凭证数据的恶意数据包发送给目标系统,无需任何身份验证。
STEP 4
触发溢出
目标系统的PJSIP库在调用`pjsip_auth_create_digest2()`函数处理该凭证时,由于缺少边界检查,将数据拷贝到128字节的栈缓冲区`ha1`中,导致栈缓冲区溢出。
STEP 5
执行代码或拒绝服务
溢出数据覆盖返回地址,攻击者可劫持程序流程执行任意代码(RCE),或者导致应用程序崩溃(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept for CVE-2026-40892 * This demonstrates how to trigger the buffer overflow * by setting a long digest credential. */ #include <pjsip.h> #include <pjlib.h> void trigger_overflow() { pjsip_cred_info cred_info; pj_bzero(&cred_info, sizeof(cred_info)); // Set the scheme to PJSIP_CRED_DATA_DIGEST (pre-computed digest) cred_info.data_type = PJSIP_CRED_DATA_DIGEST; // Create a payload longer than 128 bytes (ha1 buffer size) // This will overflow the stack buffer in pjsip_auth_create_digest2 char overflow_data[256]; memset(overflow_data, 'A', sizeof(overflow_data) - 1); overflow_data[sizeof(overflow_data) - 1] = '\0'; // Assign the malicious data to the credential info // The function will use cred_info->data.slen (256) as copy length pj_strdup2(pjsip_pool_create_default(), &cred_info.data, overflow_data); // When the library attempts to use this credential, // the overflow occurs in pjsip_auth_create_digest2(). printf("Payload prepared with length: %d\n", cred_info.data.slen); }

影响范围

PJSIP <= 2.16

防御指南

临时缓解措施
如果无法立即升级,建议在防火墙层面实施严格的流量控制,阻断异常格式的SIP请求。同时,应禁用对预计算摘要凭证(PJSIP_CRED_DATA_DIGEST)的支持,改用标准的认证流程,以规避该漏洞函数的调用路径。

参考链接

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