漏洞描述
PHP-FPM(FastCGI Process Manager:FastCGI進(jìn)程管理器)是一個(gè)PHPFastCGI管理器,對于PHP 5.3.3之前的php來說,是一個(gè)補(bǔ)丁包 [1]? ,旨在將FastCGI進(jìn)程管理整合進(jìn)PHP包中。
在 https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1150 中由于\n(%0a)的傳入導(dǎo)致nginx傳遞給php-fpm的PATH_INFO為空。進(jìn)而導(dǎo)致可以通過FCGI_PUTENV與PHP_VALUE相結(jié)合,修改當(dāng)前的php-fpm進(jìn)程中的php配置。在特殊構(gòu)造的配置生效的情況下可以觸發(fā)任意代碼執(zhí)行。但由于是配置文件的開放性,還請使用 nginx+php-fpm 的服務(wù)管理員/運(yùn)維人員及時(shí)做好自查自檢工作。
漏洞編號
CVE-2019-11043
漏洞危害
在 nginx 配置不當(dāng)?shù)那闆r下 php-fpm 可導(dǎo)致遠(yuǎn)程代碼執(zhí)行的漏洞更新。
漏洞等級
中危
受影響范圍
完全復(fù)制Nginx官方給出的php-fpm示例配置的用戶受到此漏洞影響。
修復(fù)方案
- 修改 nginx 配配置文件中fastcgi_split_path_info的正則表達(dá)式,不允許.php之后傳入不可顯字符
- 暫停使用 nginx+php-fpm 服務(wù)
- 刪除如下配置
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO?????? $fastcgi_path_info;