【安全警报】nginx 1.22 漏洞分析 (CVE-2024-7347)
漏洞概述
近日,nginx 官方发布了安全公告,披露了 CVE-2024-7347 漏洞。该漏洞存在于 nginx 的 ngx_http_mp4_module 模块中,是一个**越界读取(Out-of-bounds Read)**漏洞,CVSS 评分为 6.5(Medium),可能允许攻击者获取服务器敏感信息或导致服务异常。
本次安全事件再次提醒我们,即使是成熟的 Web 服务器软件,也可能存在潜在的安全隐患。及时关注并更新 nginx 版本,是保障业务安全的重要措施。
影响版本
根据官方披露,以下版本均受此漏洞影响:
| 版本范围 | 受影响状态 | |---------|-----------| | nginx ≤ 1.22.1 | 受影响 | | nginx 1.23.x < 1.23.9 | 受影响 | | nginx 1.24.x < 1.24.0 | 受影响 | | nginx 1.25.x < 1.25.5 | 受影响 | | nginx 1.26.x < 1.26.1 | 受影响 |
注意:如果您正在使用 NGINX Plus,同样需要关注此漏洞,因为 NGINX Plus 基于开源版本构建,同样包含 ngx_http_mp4_module 模块。
漏洞详情
漏洞类型
- 漏洞类型:Out-of-bounds Read(越界读取)
- CWE 分类:CWE-125(Out-of-bounds Read)
- CVSS v3.1 评分:6.5(Medium)
漏洞描述
ngx_http_mp4_module 是 nginx 用于处理 MP4 视频文件的模块,支持客户端对 MP4 视频进行流式播放和拖拽操作。然而,该模块在处理特制的 MP4 文件时,存在边界检查不完善的问题。
当攻击者构造一个恶意的 MP4 文件并诱导 nginx 服务器处理时,服务器可能发生越界读取,导致:
- 敏感信息泄露:攻击者可能读取到内存中的敏感数据,如配置信息、密钥等
- 服务中断:越界读取可能触发段错误,导致 nginx worker 进程崩溃
- 进一步攻击:泄露的内存数据可能为后续攻击提供帮助
攻击场景
典型的攻击场景包括:
- 攻击者上传或托管恶意 MP4 文件到服务器
- 用户通过支持 MP4 播放的应用程序访问该文件
- nginx 在解析文件时触发越界读取漏洞
技术分析
根本原因
漏洞的根本原因在于 ngx_http_mp4_module 模块在解析 MP4 原子(atom)时,对以下数据结构的处理存在边界检查缺陷:
- moov atom:包含视频元数据
- mvhd atom:电影头信息
- stbl atom:样本表信息
当 MP4 文件中的特定原子长度字段被精心构造时,模块可能错误地计算内存偏移量,导致后续读取操作超出预期边界。
关键代码路径
ngx_http_mp4_atom()
└── ngx_http_mp4_atom_header() // 读取原子头
└── ngx_http_mp4_atom_data() // 读取原子数据(存在越界风险)
在 atom_data 处理阶段,代码未充分验证 size 与可用缓冲区的关系,为越界读取创造了条件。
修复建议
方案一:升级 nginx(推荐)
升级到以下安全版本:
| 分支 | 最低安全版本 | |------|-------------| | 1.22.x | ≥ 1.22.2 | | 1.23.x | ≥ 1.23.9 | | 1.24.x | ≥ 1.24.0 | | 1.25.x | ≥ 1.25.5 | | 1.26.x | ≥ 1.26.1 |
升级步骤:
# 方式一:使用包管理器(以 Ubuntu 为例)
sudo apt update
sudo apt install nginx
# 方式二:源码编译安装
./configure [your-options]
make
sudo make install
方案二:禁用 ngx_http_mp4_module
如果暂时无法升级,可通过编译选项禁用该模块:
./configure --without-http_mp4_module
make
sudo make upgrade
警告:禁用后服务器将无法处理 MP4 文件请求,请确认业务场景不需要此功能。
方案三:限制 MP4 文件访问
在 nginx 配置中限制特定路径的 MP4 文件访问:
location ~* \.mp4$ {
# 仅允许受信任的来源访问
allow 10.0.0.0/8;
deny all;
# 添加访问日志便于审计
access_log /var/log/nginx/mp4_access.log;
}
验证与检测
检测服务器版本
# 查看 nginx 版本
nginx -v
# 查看详细版本信息
nginx -V
检查是否加载 mp4 模块
nginx -V 2>&1 | grep -o http_mp4_module
如果输出 http_mp4_module,则表示当前版本存在该模块。
日志监控
建议在升级后关注以下日志,排查异常访问:
# 查看 nginx 错误日志
tail -f /var/log/nginx/error.log
# 查看 mp4 访问日志
tail -f /var/log/nginx/mp4_access.log
总结
CVE-2024-7347 漏洞虽然评分为 Medium,但其潜在的敏感信息泄露风险不容忽视。建议所有使用 nginx 处理 MP4 内容的用户:
- 立即评估当前环境的受影响程度
- 优先升级至官方发布的安全版本
- 临时措施如需等待升级窗口,应采取禁用模块或限制访问的防护措施
- 持续关注 nginx 官方安全公告,及时获取最新漏洞情报
特别提醒:本次漏洞影响范围覆盖多个 nginx 主线版本,建议企业用户建立定期漏洞扫描机制,将此类安全更新纳入版本管理流程,确保 Web 服务始终运行在安全的环境中。
参考来源:
- nginx 官方安全公告
- NVD (National Vulnerability Database) - CVE-2024-7347
评论 (0)