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
  • 修复方案:若业务无需 WebDAV,立即移除 dav_methods 指令或完全禁用 ngx_http_dav_module 模块,同时将 alias 指令替换为 root 指令,或避免 alias 与 DAV 方法组合使用,可参考: https://my.f5.com/manage/s/article/K000160382
#.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
Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2026-06-29 15:13:48

results matching ""

    No results matching ""