【漏洞預警】Nginx/OpenResty 特殊配置下內存泄漏與目錄穿越漏洞

漏洞描述

阿里雲應急響應中心監測到國外安全研究者公開了Nginx/OpenResty在特殊配置下存在內存泄漏或目錄穿越漏洞詳情。

Nginx是一個高性能的HTTP和反向代理web服務器,OpenResty是一個基於 Nginx 與 Lua 的高性能Web平臺。近日國外安全研究者公開了Nginx/OpenResty在特殊配置下存在內存泄漏或目錄穿越漏洞詳情。由於Nginx在rewrite功能實現上存在缺陷,以及OpenResty在ngx.req.set_uri()實現上存在缺陷,如果Nginx配置文件中使用了rewrite或者ngx.req.set_uri(),則攻擊者可能可以通過構造惡意請求,從而造成內存泄漏或者目錄穿越漏洞。阿里雲應急響應中心提醒Nginx/OpenResty用戶儘快採取安全措施阻止漏洞攻擊。

影響版本

nginx <= v1.17.7
openresty <= v1.15.8.2

安全建議

  1. Nginx更新至安全版本>=v1.17.9

  2. 以下是存在漏洞的配置片段,建議用戶自檢查配置文件,並禁用相關危險配置。

location ~ /memleak {
    rewrite_by_lua_block {
        ngx.req.read_body();
        local args, err = ngx.req.get_post_args();
        ngx.req.set_uri( args["url"], true );
    }
}

location ~ /rewrite {
    rewrite ^.*$ $arg_x;
}

平滑升級nginx到最新版

一、升級前準備

1、對nginx的配置文件nginx.conf做備份;

2、新建目錄/root/nginx,將安裝包和腳本上傳到該目錄下;

3、下載最新穩定版本1.18.0,更多nginx 自動版本更新配置見“lnmp環境搭建篇

wget http://nginx.org/download/nginx-1.18.0.tar.gz 

二、平滑升級nginx

1、開始編譯新版本的nginx

cd /root/nginx
tar -zxvf  nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module&&make

2、開始重命名舊版本nginx的可執行文件,替換新版本nginx的可執行文件

cd /usr/local/nginx/sbin
mv nginx nginx.old
cp  -r /root/nginx/nginx-1.18.0/objs/nginx .

3、檢查nginx配置文件的正確性

/usr/local/nginx/sbin/nginx -t

4、開始升級新版nginx

kill -USR2 `cat  /usr/local/nginx/logs/nginx.pid`

5、舊版本nginx的pid變成nginx.pid.oldbin

cd /usr/local/nginx/logs
ls -lrt nginx.pid.oldbin

6、關閉舊版本nginx

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

7、查看新版nginx的版本號

/usr/local/nginx/sbin/nginx -v

更多nginx 常見問題及LNMP集成環境搭建請移步“如何簡單的在阿里雲centos7.6 64位操作系統上手動搭建LNMP環境(Nginx1.14.2+PHP7.x+mysql5.7)”查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章