- CNNVD編號:未知
- 危害等級: 高危
- CVE編號:CVE-2019-11043
- 漏洞類型: 代碼執(zhí)行
- 威脅類型:遠程
- 廠 商:未知
- 漏洞來源:深信服
- 發(fā)布時間:2020-09-11
- 更新時間:2021-01-14
漏洞簡介
該漏洞是PHP-FPM中的fpm_main.c文件的env_path_info下溢導(dǎo)致,在sapi/fpm/fpm/fpm_main.c文件中的第1140行包含pointer arithmetics,這些pointer arithmetics假定env_path_info的前綴等于php腳本的路徑。但是,代碼不會檢查這些假設(shè)是否被滿足,缺少檢查會導(dǎo)致”path_info”變量中的指針無效。
這樣的條件可以在標準的Nginx配置中實現(xiàn)。如果有這樣的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損壞將導(dǎo)致空PATH_INFO,從而觸發(fā)該錯誤。
這個錯誤會造成代碼執(zhí)行漏洞。在后面的代碼中,path_info[0]的值設(shè)置為0,然后再調(diào)用FCGI_PUTENV。攻擊者可以使用精心選擇的URL路徑長度和查詢字符串,使path_info精確地指向_fcgi_data_seg結(jié)構(gòu)的第一個字節(jié)。然后將0放入其中則‘char* pos’字段向后移動,然后FCGI_PUTENV使用腳本路徑覆蓋一些數(shù)據(jù)(包括其他快速cgi變量)。使用這種技術(shù),攻擊者可以創(chuàng)建一個偽PHP_VALUE fcgi變量,然后使用一系列精心選擇的配置值來執(zhí)行代碼。
漏洞公示
PHP-FPM(FastCGI流程管理器)是另一種PHP FastCGI實現(xiàn),具有一些其他功能,可用于各種規(guī)模的站點,尤其是繁忙的站點。
對于PHP 5.3.3之前的php來說,PHP-FPM是一個補丁包,旨在將FastCGI進程管理整合進PHP包中。如果你使用的是PHP 5.3.3之前的PHP的話,就必須將它patch到你的PHP源代碼中,在編譯安裝PHP后才可以使用。而PHP 5.3.3已經(jīng)集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制內(nèi)存和進程、可以平滑重載PHP配置。
參考網(wǎng)站
受影響實體
影響產(chǎn)品:
在2019-09-26更新之前下載的PHP-FPM,且必須為Nginx + php-fpm 的服務(wù)器使用如下配置,會受到影響。
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
...
}
補丁
【深信服下一代防火墻】可防御此漏洞, 建議部署深信服下一代防火墻的用戶開啟安全防御模塊,可輕松抵御此高危風(fēng)險。
【深信服云盾】已第一時間從云端自動更新防護規(guī)則,云盾用戶無需操作,即可輕松、快速防御此高危風(fēng)險。
1. 如果業(yè)務(wù)不需要以下配置,建議用戶刪除:
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
2. 使用github中的最新的PHP版本,下載地址:
https://github.com/php/php-src