セキュリティ研究者が、Steal My Bitcoinチャレンジに対するPHPのリモートコード実行(RCE)エクスプロイトの実証に成功しました。
Ethicalhacking tools
この概念実証(PoC)エクスプロイトは、特別に細工したHTTPリクエストによってメモリ破壊を引き起こし、PHPの内部アドレスを漏えいさせ、脆弱なサーバ上でコマンドを実行できることを示しています。
GitHubのユーザー名KillaBoiで活動するこの研究者は、エクスプロイトを公開GitHubリポジトリに公開しました。攻撃の詳細は、PHPバージョン8.4.26に対するものとして説明されています。
今回の実証は、CVE-2026-109618とCVE-2026-109619という2件の重大なPHPの脆弱性が公表された後に行われました。2件はあわせて「PHP2Shell」と呼ばれています。どちらもCVSS v4.0のスコアは9.2で、脆弱な条件下では認証なしのリモートコード実行を許す可能性があります。
PHPのRCEエクスプロイト
このエクスプロイトが狙うのは、PHPのセッションアップロード進捗の処理とメモリ管理です。研究者の文書によると、特別に細工したmultipart/form-dataリクエストを送ると、PHPはリクエストの実際のサイズよりもはるかに多くのメモリを割り当てます。
攻撃では、深く入れ子にしたフォームフィールド名を使い、PHPに設定された128 MiBのメモリ上限を使い切らせます。これにより、再利用されるワーカープロセスの内部に、セッション関連の古いデータが残る可能性があります。続くリクエストはこの状態を突き、PHPSESSIDクッキーを通じてメモリアドレスを漏えいさせます。
攻撃は次の4段階で進みます。
| 段階 | 技術的な処理 |
|---|---|
| ヘルスチェック | PHP 8.4.26であることを確認 |
| ヒープの漏えい | 256バイトのクッキーを通じてZendヒープのベースアドレスを復元 |
| コードの漏えい | 16バイトのクッキーを通じてzval_ptr_dtorポインタを漏えい |
| RCEの実行 | zif_systemを標的にした偽造HashTableのクリーンアップコールバックを起動 |
2つのアドレス漏えいは、アドレス空間配置のランダム化(ASLR)の回避に役立ちます。ASLRは、PHPの実行コードとヒープメモリの配置場所をそれぞれ独立にランダム化する仕組みです。
研究者は、細工したデストラクタコールバックを含む偽のPHP HashTableを組み立てます。クリーンアップ時、PHPはこの破損した構造体を解釈し、PHPのsystem()関数に対応する内部ハンドラ`zif_system`を呼び出します。
研究者のローカルテストでの出力例は次のとおりです。
[health] PHP 8.4.26 confirmed
[heap] strict Zend base 0x78113e800000
[code] strict zval_ptr_dtor 0x615b1f512930
{"stage":"final","execution_proof_verified":true}
公開されたPoCにはPython 3.11以降が必要で、サードパーティの依存関係は不要です。HTTPリクエストを生成し、メモリの漏えいを検証して、各段階の実行証跡を記録します。
研究者の報告によると、2026年10月25日15:47:38(UTC)に、稼働中のチャレンジに対するエクスプロイトの実行に成功しました。最後のHTTP POSTでは、PHPのメモリ枯渇エラーに続いて、ウォレットインポート形式(WIF)の秘密鍵が返されました。
ただし研究者は、取得した鍵がチャレンジのサイトに掲載されたビットコインアドレスと一致しなかったとも指摘しています。この食い違いについては、チャレンジの作成者も認めています。
研究者は管理されたDocker環境でもコマンド実行を再現し、テスト用バイナリの出力を取得することに成功しました。
テストでは10回中7回で実行に成功しました。失敗の主な原因は、ワーカーの選択をめぐる競合状態と、メモリレイアウトの違いです。
このPoCはAlpine上のPHP 8.4.26とCLIサーバのワーカー4つという構成に合わせて調整されています。ハードコードされたオフセットは、ほかのPHPビルドでは通用しない可能性があります。
今回の実証は、PHPのメモリ管理の欠陥がリソース枯渇から情報漏えいへ、さらにはリモートでのコマンド実行にまで発展しうることを示しています。
組織は、利用しているサポート対象ブランチに応じて、脆弱なインストール環境をPHP 8.4.27、8.3.36、8.2.35、8.5.12のいずれかに更新してください。
管理者は、通常とは異なるmultipartリクエスト、PHPのメモリ枯渇エラーの繰り返し、異常なセッションクッキー、PHPワーカープロセスによる想定外のコマンド実行を監視してください。
公開されたエクスプロイトは特定のチャレンジ環境向けに作られています。それでも、最近公表されたPHP2Shell脆弱性がもたらしうる影響の大きさをあらためて示しています。
影響が出る前にサイバー脅威を阻止し、MTTRを21分短縮。ANYRUNのサンドボックスをSOCに統合。
AuditSecurity
翻訳元: https://gbhackers.com/hacker-demonstrates-php-remote-code-execution-in-stealmybitcoin/