【安全威胁通告】php-fpm远程代码执行漏洞(CVE-2019-11043)
2019-10-25
综述
近日,国外安全研究员公布了一个存在于php-fpm中的漏洞(CVE-2019-11043),在某些特定Nginx配置中,该漏洞可能会导致远程代码执行。
漏洞存在于文件sapi/fpm/fpm/fpm_main.c(https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1140),其中假设env_path_info的前缀等于php脚本的路径,但是实际上代码不会检查此假设是否满足,缺少该检查会导致“path_info”变量中的指针无效。当在某些Nginx配置中,攻击者可以使用换行符(编码格式为%0a)来破坏\`fastcgi_split_path_info\`指令中的regexp,regexp损坏将导致空PATH_INFO,从而触发该漏洞。
据了解,该漏洞是研究员Andrew Danau在一场CTF比赛过程中偶然发现的,当他向服务器URL发送%0a时,服务器返回异常深入研究后发现此漏洞。
参考连接:
https://lab.wallarm.com/php-remote-code-execution-0-day-discovered-in-real-world-ctf-exercise/
受影响版本
nginx + php-fpm环境中,使用如下nginx配置,所有PHP 7+版本均受影响(PHP 7.0、PHP 7.1、PHP 7.2、PHP 7.3),且目前在PHP 5.6版本上也可造成崩溃。
特定的nginx配置如下:
location ~ [^/].php(/|$) { fastcgi_split_path_info ^(.+?.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } } |
安全建议
1、PHP官方已于10月12号发布补丁,详情参考链接,建议受影响用户升级进行修复。
2、检查nginx配置,如果存在上述易受攻击配置,建议删除
fastcgi_split_path_info ^(.+?.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
参考链接:
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
声 明
本安全公告仅用来描述可能存在的安全问题,js1996官网登录不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,js1996官网登录以及安全公告作者不为此承担任何责任。js1996官网登录拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经js1996官网登录允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。
关于js1996官网登录
北京神州金沙js1996信息安全科技股份有限公司(简称js1996官网登录)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。
基于多年的安全攻防研究,js1996官网登录在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。
北京神州金沙js1996信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市,股票简称:js1996官网登录,股票代码:300369。