
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 핸들러에 존재하는 두 가지 치명적인 사전 인증(pre-auth) 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으로 확인된 heap-use-after-freePS(serializer)가 초기화되지 않음 — FPM에서 요청 간 serializer 누출__destruct가 실행됨 — 핸들러 불일치 + 후행 데이터를 통한 객체 주입poc/
verify_session_injection.py — 세션 파일로의 파일명 주입 검증
verify_uaf_asan.php — ASAN heap-use-after-free 트리거 (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