【漏洞预警】php远程代码执行漏洞(cve-2019-11043)
  • cnnvd编号:未知
  • 危害等级: 高危 
  • cve编号:cve-2019-11043
  • 漏洞类型: 代码执行
  • 威胁类型:远程
  • 厂       商:未知
  • 漏洞来源:深信服
  • 发布时间:2020-09-11
  • 更新时间:2021-01-14

漏洞简介

该漏洞是php-fpm中的fpm_main.c文件的env_path_info下溢导致,在sapi/fpm/fpm/fpm_main.c文件中的第1140行包含pointer arithmetics,这些pointer arithmetics假定env_path_info的前缀等于php脚本的路径。但是,代码不会检查这些假设是否被满足,缺少检查会导致”path_info”变量中的指针无效。


这样的条件可以在标准的nginx配置中实现。如果有这样的nginx配置:

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

    攻击者可以使用换行符(编码格式为%0a)来破坏`fastcgi_split_path_info`指令中的regexp。regexp损坏将导致空path_info,从而触发该错误。


    这个错误会造成代码执行漏洞。在后面的代码中,path_info[0]的值设置为0,然后再调用fcgi_putenv。攻击者可以使用精心选择的url路径长度和查询字符串,使path_info精确地指向_fcgi_data_seg结构的第一个字节。然后将0放入其中则‘char* pos’字段向后移动,然后fcgi_putenv使用脚本路径覆盖一些数据(包括其他快速cgi变量)。使用这种技术,攻击者可以创建一个伪php_value fcgi变量,然后使用一系列精心选择的配置值来执行代码。

    漏洞公示

    php-fpm(fastcgi流程管理器)是另一种php fastcgi实现,具有一些其他功能,可用于各种规模的站点,尤其是繁忙的站点。


    对于php 5.3.3之前的php来说,php-fpm是一个补丁包,旨在将fastcgi进程管理整合进php包中。如果你使用的是php 5.3.3之前的php的话,就必须将它patch到你的php源代码中,在编译安装php后才可以使用。而php 5.3.3已经集成php-fpm了,不再是第三方的包了。php-fpm提供了更好的php进程管理方式,可以有效控制内存和进程、可以平滑重载php配置。

    参考网站


    受影响实体

    影响产品

    在2019-09-26更新之前下载的php-fpm,且必须为nginx php-fpm 的使用如下配置,会受到影响。

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

      补丁

      深信服下一代防火墙】可防御此漏洞, 建议部署深信服下一代防火墙的用户开启安全防御模块,可轻松抵御此高危风险。


      深信服云盾】已第一时间从云端自动更新防护规则,云盾用户无需操作,即可轻松、快速防御此高危风险。

      1. 如果业务不需要以下配置,建议用户删除:

        fastcgi_split_path_info ^(. ?\.php)(/.*)$;        fastcgi_param path_info       $fastcgi_path_info;


        2. 使用github中的最新的php版本,下载地址:

        https://github.com/php/php-src