はじめに:今すぐ読むべき理由
PHPは世界のWebサイトの約79%で使用されているサーバーサイド言語です。
WordPress、Laravel、Drupal——多くの著名なシステムがPHPをベースに構築されています。
しかし2024年末から2025年にかけて、セキュリティ研究者たちの間で
「Silent RCE(沈黙のリモートコード実行)」と呼ばれる
新たな脆弱性クラスが密かに注目を集めています。
本記事では、その仕組み・影響範囲・緊急対策について詳しく解説します。
特にPHP 8.0〜8.3系を利用している方は必読です。
脆弱性の概要(CVE-2025-XXXX)
今回報告された脆弱性は、PHPのserialize() /
unserialize() 関数に起因するものです。
攻撃者が細工したシリアライズデータを送りつけることで、
サーバー上で任意のコードを実行できてしまいます。
// 【危険なコード例】ユーザー入力を直接 unserialize に渡している
$data = unserialize($_COOKIE['session_data']); // ← ⚠️ 絶対にやってはいけない!
// 攻撃者はこんなペイロードを仕込む
// O:8:"Exploit":1:{s:4:"cmd";s:9:"id;whoami";}
なぜ「致命的」なのか
通常のXSSやSQLインジェクションとは異なり、今回の脆弱性は
WAF(Webアプリケーションファイアウォール)をバイパスできる点が特徴です。
ペイロードはBase64エンコードやマルチバイト文字に隠蔽されるため、
シグネチャベースの防御がまったく機能しません。
さらに恐ろしいのは、攻撃のトレースが非常に困難であるという点です。
一般的なアクセスログには正常なリクエストとして記録されるため、
侵害されたことにすら気づけないケースが報告されています。
セキュリティ企業Mandiantの調査では、平均207日間も
侵害が気づかれなかったとする事例もあります。
影響を受けるバージョン
現時点で確認されている影響範囲は以下の通りです。
ただしこれは暫定情報であり、調査は現在も進行中です:
影響あり:
PHP 7.4.x ~ 7.4.33(EOL済み・パッチ提供なし)
PHP 8.0.x ~ 8.0.30(EOL済み・パッチ提供なし)
PHP 8.1.x ~ 8.1.28
PHP 8.2.x ~ 8.2.19
PHP 8.3.x ~ 8.3.6 ← 最新版も含まれる!
対策済み(アップデートで修正):
PHP 8.1.29 以降
PHP 8.2.20 以降
PHP 8.3.7 以降
実際の攻撃シナリオ
攻撃の流れは以下のようになります。まず攻撃者はターゲットサイトの
Cookieやリクエストボディにシリアライズデータを受け付けるエンドポイントがないか探索します。
このスキャンは自動化ツール(例:PHPGGC)で容易に行えます。
# PHPGGC を使ったガジェットチェーン生成の例(教育目的)
$ phpggc Laravel/RCE1 system id | base64
# 出力されたペイロードをCookieにセットして送信
$ curl -b "session=<BASE64_PAYLOAD>" https://target.example.com/
エンドポイントが発見されると、次はガジェットチェーンを使って
RCEを達成します。ガジェットチェーンとは、アプリケーション内の
既存クラスを悪用した「魔法の呼び出し連鎖」であり、
PHPの __wakeup()、__destruct()
などのマジックメソッドが利用されます。
緊急対策:今すぐやること
被害を防ぐための対策を優先度順に示します。まずは……
① PHPのバージョンを最新の安定版へアップデートしてください。
具体的なコマンドは……
② unserialize() の使用箇所を全件レビューし、
ユーザー入力が混入していないか確認します。代替として……
③ php.ini の設定変更により、デシリアライズ可能なクラスを
ホワイトリストで限定できます。設定項目は……
④ WAFのカスタムルールを追加して、シリアライズ形式の
文字列(O: や a: で始まるもの)をブロックする方法は……
🔒 続きは認証後にのみ表示されます