脆弱性の詳細
PHP:サービス停止
PHP 本体CVE-2025-14178重要度:中悪用状況:未確認修正版情報ありPHPにサービス停止に関する脆弱性情報があります。影響を受ける条件を確認してください。
どんな危険?
処理の停止や過大な負荷により、サービスを利用できなくなる可能性があります。
- 対象
- PHP 8.1系 / php-src:< 8.1.34(修正版 8.1.34 に対応する系列。旧系列の影響は原文確認)PHP 8.2系 / php-src:< 8.2.30(修正版 8.2.30 に対応する系列。旧系列の影響は原文確認)PHP 8.3系 / php-src:< 8.3.29(修正版 8.3.29 に対応する系列。旧系列の影響は原文確認)PHP 8.4系 / php-src:< 8.4.16(修正版 8.4.16 に対応する系列。旧系列の影響は原文確認)PHP 8.5系 / php-src:< 8.5.1(修正版 8.5.1 に対応する系列。旧系列の影響は原文確認)
- 修正版
- 8.1.348.2.308.3.298.4.168.5.1
どうすればいい?
- 使っている製品名・バージョン・構成を、影響を受ける条件と照合してください。
- 公式の修正版を確認し、バックアップと動作確認のうえで更新してください。
- 更新後は稼働中のバージョンと動作を確認してください。管理を委託している場合は、提供元に対応状況を確認してください。
悪用状況の「未確認」は、悪用されていないことを意味しません。対策は製品・バージョン・利用条件によって異なります。適用前に情報源とご自身の環境を確認してください。
情報の出典と更新日時
原文と条件を確認
The following PHP code triggers a reliable heap buffer overflow: ```php $arr = range(0, 2**29); array_merge($arr, $arr, $arr, $arr, $arr, $arr, $arr, $arr); ``` Or the general case: ```php $power = 24; // You can choose this number 1 <= $power < 32 $arr = range(0, 2**$power); array_merge(...array_fill(0, 2**(32-$power), $arr)); ``` This is because packed arrays in array_merge() have an optimization that requires precomputing the count of the elements, done using `count += zend_hash_num_elements(Z_ARRVAL_P(arg));`. However, this may overflow. Note that even if it didn't, it would cause a DoS because array_init() will trigger a bailout with too large counts. The code provided is artificial, but I believe this can happen in the real world with for example large sets of JSON data that are then passed to array_merge(). The total count just has to exceed HT_MAX_SIZE to trigger the DoS or the 32-bit limit to trigger the buffer overflow.