nginx 安全扫描及漏洞处理
低危漏洞
Nginx 缓冲区溢出漏洞(CVE-2026-27654)
- 漏洞描述:NGINX 是一款高性能的 HTTP 和反向代理服务器,ngx_http_dav_module 模块用于处理 WebDAV 协议请求。
该模块在处理 MOVE 或 COPY 方法时,若 location 配置了 alias 指令且为前缀匹配,存在缓冲区溢出漏洞。
攻击者可通过构造恶意的 Destination 请求头,导致 worker 进程崩溃或在 document root 之外修改文件名。
- CVE编号:CVE-2026-27654
- 披露时间:2026-03-24
- 风险等级:低危
- 影响范围:nginx_open_source <= 1.29.7
- 阿里官方:https://avd.aliyun.com/detail?id=AVD-2026-27654
- 检测方法:检测 nginx 是否编译了 ngx_http_dav_module 模块,若编译则避免 alias 与 WebDAV 组合使用
#.1.确认版本是否受影响
nginx -V
#.2.确认是否编译了 ngx_http_dav_module 模块, 若没有编译则忽略
nginx -V 2>&1 | grep http_dav_module
#.1.备份站点配置文件
mkdir -p /20260628
cp /usr/local/nginx/conf/nginx.conf /20260628/nginx.conf
#.2.如果配置了include则相关目录也需要备份(根据实情调整)
cat /usr/local/nginx/conf/nginx.conf | grep include
#.3.查找包含 dav_methods 指令的文件, 如果有, 请将其值设置为 off 或注释该行
# 比如 dav_methods PUT DELETE MKCOL COPY MOVE;
find /usr/local/nginx/conf/ -type f -name "*.conf" | xargs grep "^\s*dav_methods"
#.4.查找包含 alias 的文件, 如果有, 请将其替换为 root
find /usr/local/nginx/conf/ -type f -name "*.conf" | xargs grep "^\s*alias"
#.5.最后 nginx -t 确认配置无误, 然后 nginx -s reload 热重启
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
- 升级方案:如果已编译 ngx_http_dav_module 模块,则建议重新编译(去掉受影响的模块)或将 NGINX 升级至 1.29.7 及以上版本
#.1.执行 /usr/local/nginx/sbin/nginx -V 找到编译参数, 即 configure arguments 后面的一串, 下面示例编译了 --with-http_dav_module
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.25.0
...
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_dav_module --with-pcre --with-pcre-jit #.后面省略...
#.2.停掉nginx进程或服务(根据实情调整)
# systemctl stop nginx
/usr/local/nginx/sbin/nginx -s stop
#.3.备份老版本的站点配置文件(根据实情调整)
mkdir -p /20260628
cp /usr/local/nginx/conf/nginx.conf /20260628/nginx.conf
#.4.如果配置了include则相关目录也需要备份(根据实情调整)
cat /usr/local/nginx/conf/nginx.conf | grep include
#.5.备份老版本的安装目录(参考第1步中的 --prefix=/usr/local/nginx)
mv /usr/local/nginx /usr/local/nginx.1250
#.6.使用指定版本(推荐1.30.3)的nginx安装文件, 参考第1步的参数进行编译(删除 --with-http_dav_module)
cd /opt/
wget -c http://iso.sqlfans.cn/linux/nginx-1.30.3.tar.gz
tar xvf nginx-1.30.3.tar.gz
cd nginx-1.30.3
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-pcre --with-pcre-jit #.后面省略...
make && make install
#.7.将老版本的站点配置文件替换到新编译的目录下
\cp /usr/local/nginx.1250/conf/nginx.conf /usr/local/nginx/conf/nginx.conf
#.8.启动nginx服务
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
- 回滚方案:针对升级方案,可通过如下方案回退。针对虚拟机,强烈建议在操作之前创建一个快照
#.1.停掉nginx进程或服务(根据实情调整)
# systemctl stop nginx
/usr/local/nginx/sbin/nginx -s stop
#.2.将新编译的nginx目录备份
mv /usr/local/nginx /usr/local/nginx.1303
#.3.将整改之前备份的老版本目录改回来
mv /usr/local/nginx.1250 /usr/local/nginx
#.4.再次启动nginx服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf