1
综述
6月9日,PHP发布安全公告,修复了两个存在于PHP中的远程代码执行漏洞。
PHP此次的漏洞,简而言之,会恶意查询服务器数据。
PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。
2
漏洞概述
漏洞类型:远程代码执行漏洞
危险等级:高危
CVSS评分:9.8
受影响版本:
PHP 5.3.0 - 5.6.40
PHP 7.0.x < 7.4.30
PHP 8.0.x < 8.0.20
PHP 8.1.x < 8.1.7
相关说明:
漏洞利用难度高;POC已公开。
3
漏洞分析
· CVE-2022-31625
漏洞详情:
https://bugs.php.net/bug.php?id=81720
漏洞是由于在
PHP_FUNCTION(pg_query_params)函数中,使用zval_try_get_string进行数据类型转换,如果数据类型转换错误就会调用_php_pgsql_free_params释放掉的数组前部分值i,但由于错误传递参数,传递了整个数组的大小值num_params,导致释放了整个数组,进而导致释放了之前请求的值。
未修复代码:
修复后的代码:
同样在PHP_FUNCTION(pg_send_execute)函数中也存在这个问题。
漏洞利用条件:
需要开发的php服务端代码中将不可转换的数据param作为参数直接传递给pg_query_params()或pg_send_execute()。
可能的攻击场景为:
1、phpmyadmin等可指定连接数据库的应用。
2、存在ssrf、xss等漏洞的基于php的应用。
3、攻击者拿下了数据库服务器后,通过数据库服务器攻击php所在服务器。
· CVE-2022-31626
漏洞详情:
https://bugs.php.net/bug.php?id=81719
该漏洞在验证时会将mysql查询到的auth_data数据复制到内存数组p,申请p内存时,只申请了验证数据的buffer部分(长度为packet->auth_data_len)。而实际的auth_data是packet->auth_data_len+MYSQLND_HEADER_SIZE,所以导致复制时将大的数据复制到的小的空间发生了溢出。
未修复代码:
修复后的代码:
可以看到修复后的mnd_emalloc申请的内存大小改为了packet->auth_data_len+MYSQLND_HEADER_SIZE;修复了该漏洞。
漏洞利用条件:
PHP连接查询恶意的mysql数据库。
可能的攻击场景为:
1、php连接的mysql地址可控。
2、攻击者拿下了mysql服务器,通过mysql服务器攻击php所在服务器。
4
修复建议
厂商已发布新版本修复漏洞,建议升级到 7.4.30、8.0.20、8.1.7 及以上安全版本,下载地址:https://www.php.net/downloads
参考链接:
https://bugs.php.net/bug.php?id=81719
https://bugs.php.net/bug.php?id=81720
5
产品支持
青藤万相·主机自适应安全平台
点击系统左边栏「Linux-风险发现-漏洞检测」,选择该检查项创建作业进行检测。
青藤蜂巢·云原生安全平台
点击系统左边栏「应用风险-应用漏洞」,选择该检查项创建作业进行检测。
-完-
原文始发于微信公众号(青藤云安全):【漏洞通告】PHP 远程代码执行漏洞(CVE-2022-31625、CVE-2022-31626)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论