漏洞警告:PHP 官方披露了Nginx + php-fpm 部分配置下存在的远程代码执行高危漏洞

774 阅读1分钟

    2019年10月23日,php官方发布了在 Nginx 配置不当的情况下 php-fpm 可导致远程代码执行的漏洞。但由于是配置文件的开放性,还请使用nginx+php-fpm 的服务管理员/运维人员及时做好自查自检工作。

【漏洞详情】

    PHP 官方发布漏洞通告,提到 Nginx 与 php-fpm 服务器上存在的一处高危漏洞,由于Nginx的 fastcgi_split_path_info 模块在处理带 %0a 的请求时,对换行符 \n 处置不慎导致将 PATH_INFO 置为空,从而导致 php-fpm 组件在处理 PATH_INFO 时存在漏洞,可被攻击者利用进行代码执行攻击。目前开源社区已有漏洞PoC公开。

注:完全复制Nginx官方给出的php-fpm示例配置的用户受到此漏洞影响

【代码示例如下】

   location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_pass   php:9000;
        ...
  }
}

【修复建议】 修改 nginx 配配置文件中fastcgi_split_path_info的正则表达式,不允许.php之后传入不可显字符暂停使用 nginx+php-fpm 服务

删除如下配置:

fastcgi_split_path_info ^(.+?.php)(/.*)$;

fastcgi_param PATH_INFO $fastcgi_path_info;

【漏洞参考】

1)官方更新通告:bugs.php.net/bug.php?id=…

2)开源社区介绍:github.com/neex/phuip-…