一、漏洞概述
5月16日,PHP官方收到了来自c dot fol at ambionics dot io的一份报告,报告中提出关于PHP8.1.6版本,存在远程代码执行漏洞。经PHP官方确认,于6月9日,PHP官网发布了该漏洞的修复方案。
CVE-2022-31625
CVE-2022-31626
二、漏洞等级
CVE-2022-31625:PHP远程代码执行漏洞
高危
漏洞POC:公开
CVE-2022-31626:PHP远程代码执行漏洞
高危
漏洞POC:公开
CVSSv3评分为9.8
三、漏洞影响
四、漏洞分析
CVE-2022-31625
在pg_query_params()中,由于数组没有被初始化,因此可以释放以前请求中的延迟值,最终可导致远程代码执行。
PHP_FUNCTION(pg_query_params)函数中,使用zval_try_get_string进行数据类型转换,如果数据类型转换错误就会调用_php_pgsql_free_params释放掉的数组前部分值i,但由于错误传递参数,传递了整个数组的大小值num_params,导致释放了整个数组,进而导致释放了之前请求的值。
CVE-2022-31626
该漏洞在验证时会将mysql查询到的auth_data数据复制到内存数组p,申请p内存时,只申请了验证数据的buffer部分(长度为packet->auth_data_len)。而实际的auth_data是packet->auth_data_len+MYSQLND_HEADER_SIZE,所以导致复制时将大的数据复制到的小的空间发生了溢出。
五、修复建议
目前官方已发布修复版本,用户可升级至以下安全版本:
PHP 8.1.7
PHP 8.0.20
PHP 7.4.30
注:CVE-2022-31625影响的PHP 5.x官方已结束维护,请用户升级到上述安全版本。
参考资料
[1]https://bugs.php.net/bug.php?id=81719
[2]https://bugs.php.net/bug.php?id=81720
六、产品支持
目前聚铭网络脆弱性扫描系统(CSV)已经支持该漏洞的检测,用户可以到官网https://www.juminfo.com/index.php?catid=51下载最新漏扫插件,来检测是否存在该漏洞。