一、漏洞概述
5月16日,PHP官方收到了來自c dot fol at ambionics dot io的一份報告,報告中提出關于PHP8.1.6版本,存在遠程代碼執(zhí)行漏洞。經(jīng)PHP官方確認,于6月9日,PHP官網(wǎng)發(fā)布了該漏洞的修復方案。
CVE-2022-31625
CVE-2022-31626
二、漏洞等級
CVE-2022-31625:PHP遠程代碼執(zhí)行漏洞
高危
漏洞POC:公開
CVE-2022-31626:PHP遠程代碼執(zhí)行漏洞
高危
漏洞POC:公開
CVSSv3評分為9.8
三、漏洞影響
四、漏洞分析
CVE-2022-31625
在pg_query_params()中,由于數(shù)組沒有被初始化,因此可以釋放以前請求中的延遲值,最終可導致遠程代碼執(zhí)行。
PHP_FUNCTION(pg_query_params)函數(shù)中,使用zval_try_get_string進行數(shù)據(jù)類型轉(zhuǎn)換,如果數(shù)據(jù)類型轉(zhuǎn)換錯誤就會調(diào)用_php_pgsql_free_params釋放掉的數(shù)組前部分值i,但由于錯誤傳遞參數(shù),傳遞了整個數(shù)組的大小值num_params,導致釋放了整個數(shù)組,進而導致釋放了之前請求的值。
CVE-2022-31626
該漏洞在驗證時會將mysql查詢到的auth_data數(shù)據(jù)復制到內(nèi)存數(shù)組p,申請p內(nèi)存時,只申請了驗證數(shù)據(jù)的buffer部分(長度為packet->auth_data_len)。而實際的auth_data是packet->auth_data_len+MYSQLND_HEADER_SIZE,所以導致復制時將大的數(shù)據(jù)復制到的小的空間發(fā)生了溢出。
五、修復建議
目前官方已發(fā)布修復版本,用戶可升級至以下安全版本:
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
六、產(chǎn)品支持
目前聚銘網(wǎng)絡脆弱性掃描系統(tǒng)(CSV)已經(jīng)支持該漏洞的檢測,用戶可以到官網(wǎng)http://lduoba.com/index.php?catid=51下載最新漏掃插件,來檢測是否存在該漏洞。