
CVE-2026-109618/109619 PHP session.upload_progress エクスプロイト研究 — POC と分析
重大な PHP session.upload_progress 脆弱性(CVSS v4.0 9.2)に関する独立したセキュリティ研究。
著者: Qi Deng (@ikow)
日付: 2026-10-21
完全な解説記事: qideng.substack.com
PHP コアの session.upload_progress ハンドラに存在する 2 件の重大な認証前 RCE 脆弱性で、PHP 5.4.0 から 8.5.x までに影響します。このリポジトリには、許可されたセキュリティテスト向けの検証用 POC とラボ環境が含まれています。
| チェーン | 種類 | 条件 | 検証状況 |
|---|---|---|---|
| セッションファイルインジェクション + LFI | ロジックバグ | upload_progress=On(デフォルト)+ アプリの LFI | ✅ RCE |
| var_destroy UAF → ハンドラ上書き | メモリ破壊 | unserialize() + /proc/self/mem | ✅ ASAN + RCE |
ハンドラ不一致 → __destruct | デシリアライゼーション | ディレクトリ間のハンドラ不一致 + POP ガジェット | ✅ RCE |
session.use_only_cookies をバイパスする(PR #22113)var_destroy の __destruct 再入 UAF — ASAN で確認されたヒープ使用後解放PS(serializer) がリセットされない — FPM におけるリクエスト間のシリアライザリーク__destruct が発火する — ハンドラ不一致 + 末尾データによるオブジェクトインジェクションpoc/
verify_session_injection.py — セッションファイルへのファイル名インジェクションを検証
verify_uaf_asan.php — ASAN ヒープ使用後解放(var_destroy)をトリガー
verify_handler_mismatch.py — ハンドラ不一致 → オブジェクトデシリアライゼーションを検証
lab/
docker-compose.yml — PHP 8.2.34 FPM + nginx ラボ環境
Dockerfile — 脆弱な PHP ビルド
php.ini — ラボ設定
setup.sh — ワンクリックラボセットアップ
docs/
ANALYSIS.md — 完全な技術分析
# Start the lab
cd lab && ./setup.sh
# Verify session injection
python3 poc/verify_session_injection.py --target http://127.0.0.1:18080
# Verify UAF (requires ASAN build)
docker exec php-asan-lab php poc/verify_uaf_asan.php
# Verify handler mismatch
python3 poc/verify_handler_mismatch.py --target http://127.0.0.1:18080
session.upload_progress を備えるすべてのバージョン); Immediate mitigation (does NOT fix all attack paths)
session.upload_progress.enabled = Off
session.use_only_cookies = On
この研究は、許可されたセキュリティテストおよび教育目的のみを対象としています。所有していないシステム、または明示的なテスト許可を得ていないシステムに対して使用しないでください。
MIT