安全研究人员近日公开了Nginx中一个存在长达18年的严重漏洞(CVE-2026-42945),该漏洞位于ngx_http_rewrite_module中,属于堆缓冲区溢出类型,攻击者可以利用它实现远程代码执行(RCE)。这意味着任何运行受影响版本Nginx的服务器,都可能被远程攻击者完全控制。
漏洞概述
CVE-2026-42945是一个堆缓冲区溢出漏洞,存在于Nginx的HTTP重写模块(ngx_http_rewrite_module)中。该模块负责处理配置文件中的rewrite指令,是Nginx最基础、最常用的功能之一。
关键信息:
- CVE编号:CVE-2026-42945
- 漏洞类型:堆缓冲区溢出(Heap Buffer Overflow)
- 影响版本:Nginx 0.6.27 到 1.30.0(跨度18年)
- 修复版本:Nginx 1.31.0 / 1.30.1
- 危害等级:严重(Critical)——可实现远程代码执行
- 发现方式:由安全研究系统DepthFirst自主发现
漏洞影响范围
这个漏洞影响范围极广。从2008年发布的Nginx 0.6.27到最新的1.30.0版本,所有使用了rewrite指令的Nginx实例都可能受到影响。考虑到rewrite是Nginx配置中最常见的指令之一,几乎所有生产环境的Nginx服务器都在受影响范围内。
除了CVE-2026-42945之外,同一研究还披露了另外三个相关漏洞:
- CVE-2026-42946:另一个内存损坏漏洞
- CVE-2026-40701:内存安全问题
- CVE-2026-42934:相关的内存损坏缺陷
这些漏洞都与Nginx的内存管理机制有关,说明该模块在处理特殊构造的输入时存在系统性的安全问题。
漏洞发现过程
这个漏洞的发现方式本身也值得关注。它是由名为DepthFirst的安全研究系统自主发现的,而非人工审计的结果。DepthFirst是一个自动化漏洞挖掘系统,能够对大型C/C++代码库进行深度分析。
该系统在分析Nginx源码时,发现了ngx_http_rewrite_module中处理变量赋值时的边界检查缺陷。通过精心构造的请求,攻击者可以触发堆缓冲区溢出,进而控制程序执行流程。
漏洞利用详情
漏洞利用代码(PoC)已经公开发布。攻击的核心在于:
- 发送特制的HTTP请求,其中包含精心构造的rewrite指令参数
- Nginx的rewrite模块在处理这些参数时,未正确验证缓冲区边界
- 溢出数据覆盖堆上的相邻内存区域,包括函数指针
- 当Nginx后续执行被覆盖的函数指针时,攻击者获得代码执行权
由于Nginx通常以root或www-data权限运行,成功利用该漏洞的攻击者可以获得服务器的完全控制权,包括读取所有网站文件、数据库凭证、SSL私钥等敏感信息。
站长应对建议
立即行动:
- 检查当前Nginx版本:运行
nginx -v查看版本号 - 立即升级:升级到Nginx 1.31.0或1.30.1。如果使用包管理器:
- Ubuntu/Debian:
sudo apt update && sudo apt upgrade nginx - CentOS/RHEL:
sudo yum update nginx
- Ubuntu/Debian:
- 临时缓解措施:如果暂时无法升级,可以检查Nginx配置中是否使用了rewrite指令,评估是否可以临时禁用
- 检查日志:查看Nginx访问日志中是否有异常请求,特别是包含异常长URI或特殊字符的请求
- 使用WAF:在Nginx前部署Web应用防火墙,拦截可疑的rewrite相关请求
后续影响
这个漏洞再次提醒我们,即使是Nginx这样经过广泛审计的基础设施软件,也可能隐藏着存在多年的安全缺陷。自动化的漏洞发现工具正在改变安全研究的格局——过去需要人工数周才能发现的漏洞,现在可能被自动化系统在几小时内找到。
对于站长来说,保持软件更新永远是第一要务。建议配置自动安全更新,或至少订阅Nginx的安全公告邮件列表,以便在第一时间获知安全更新。
来源:
DepthFirst: Nginx-Rift – Achieving Nginx RCE via an 18-year-old Vulnerability
GitHub: Nginx-Rift 漏洞披露
Nginx官方安全公告
















暂无评论内容