近日,国家信息安全漏洞库(CNNVD)收到关于PHP-FPM远程代码执行漏洞(CNNVD-201910-1456、CVE-2019-11043)情况的报送。成功利用漏洞的攻击者,可远程执行代码。当Nginx + php-fpm 的服务器在特定配置下,都会受该漏洞影响。目前,PHP官方已经发布新版本修复了该漏洞,建议用户及时确认是否受到漏洞影响,尽快采取修补措施。
一、漏洞介绍
PHP是PHP Group和开放源代码社区共同维护的一种开源的通用计算机脚本语言。该语言主要用于Web开发,支持多种数据库及操作系统。PHP-FPM是PHP集成的一个组件,用于FastCGI进程管理,Nginx 是一个HTTP和反向代理web服务器。
该漏洞需要在PHP-FPM+Nginx组合,并采用一定配置的情况下才会被触发,但这个配置并非Nginx默认配置。当fastcgi_split_path_info字段被配置为 ^(.+?\.php)(/.*)$;时,攻击者可以通过精心构造的payload,触发远程代码执行漏洞,由于该配置已被广泛使用,危害较大,请用户及时采取修补措施。
二、危害影响
当PHP-FPM+Nginx的服务器有如下配置的时候,都会受漏洞影响,配置如下:
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
...
}
}
该漏洞PoC已在2019年10月22日公布,PHP与Nginx组合使用的情况较为广泛,攻击者可利用该漏洞远程执行任意代码,所以危害较大。
三、修复建议
目前,PHP官方已经发布新版本修复了该漏洞,建议用户及时确认是否受到漏洞影响,尽快采取修补措施。更新如下:
https://bugs.php.net/patch-display.php?bug_id=78599&patch=0001-Fix-bug-78599-env_path_info-underflow-can-lead-to-RC.patch&revision=latest
修改配置解决措施如下:
(1)在nginx 配置文件中加入try_files $uri=404
(2)结合业务需求,删除如下配置
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
本通报由CNNVD技术支撑单位——北京天融信网络安全技术有限公司、新华三技术有限公司、深信服科技股份有限公司、奇安信科技集团股份有限公司、知道创宇404实验室提供支持。
CNNVD将继续跟踪上述漏洞的相关情况,及时发布相关信息。如有需要,可与CNNVD联系。
联系方式: cnnvd@itsec.gov.cn