치명적 CVSS 9.2 공식 패치 2026년 10월 21일 릴리스 실제 공격 악용 확인됨

귀하의 PHP 사이트가 php2shell 취약점에 노출되어 있습니까? (CVE-2026-109618 & 109619)

무료 온라인 취약점 진단, 최소 안전 PHP 버전 매트릭스(8.5.12, 8.4.27, 8.3.36, 8.2.35) 및 플랫폼별 긴급 보안 패치 가이드.

수동 진단: HTTP 응답 헤더를 검사하기 위해 비파괴적인 단일 GET 요청만 전송합니다. 익스플로잇이나 POST 본문 전송은 일체 없습니다.

공식 영향 및 패치 완료 PHP 버전 매트릭스

출처: 업스트림 php.net 공식 보안 릴리스 및 GitHub 권고문 (2026년 10월 21일 발표).

PHP 브랜치 취약 범위 최초 패치 릴리스 공식 상태 및 필수 조치
PHP 8.5 < 8.5.12 8.5.12 공식 액티브 지원 — 다음 버전으로 업그레이드: 8.5.12+
PHP 8.4 < 8.4.27 8.4.27 공식 액티브 지원 — 다음 버전으로 업그레이드: 8.4.27+
PHP 8.3 < 8.3.36 8.3.36 공식 액티브 지원 — 다음 버전으로 업그레이드: 8.3.36+
PHP 8.2 < 8.2.35 8.2.35 보안 지원만 제공 (2026년 12월 종료) — 다음 버전으로 업그레이드: 8.2.35+
PHP 8.6 < 8.6.0RC4 8.6.0RC4 개발용 RC — 테스트 전용, 프로덕션 사용 금지
PHP 8.1, 8.0, 7.4 전 버전 취약 공식 릴리스 없음 공식 지원 종료 (EOL) — 배포판 패치가 백포트되지 않은 한 취약
PHP 5.4 – 7.3 전 버전 취약 패치 미제공 레거시 취약 브랜치 — 패치 미제공, 반드시 session.upload_progress 비활성화
Linux 배포판 패키지에 관한 중요 참고 사항:

Ubuntu, Debian 및 RHEL 등은 업스트림 버전 번호를 올리지 않고 보안 패치를 백포트합니다 (예: Ubuntu 22.04는 8.1.2-1ubuntu2.28 제공). 당황하기 전에 Ubuntu 가이드를 참조하여 패키지 변경 로그를 확인하십시오.

즉시 조치: 4단계 필수 완화 프로토콜

다음 단계를 반드시 순서대로 수행하십시오. 다른 대책만으로는 PHP2Shell을 완전히 방어할 수 없습니다.

01

모든 PHP 런타임 식별

웹 서버, Docker 컨테이너, 베이스 이미지 및 스테이징 사이트를 전수 조사하십시오. CLI 버전(php -v)은 PHP-FPM 또는 Apache가 실제로 실행하는 버전과 다를 수 있습니다.

환경 인벤토리 명령어 보기 →
02

패치된 버전 설치

공식 릴리스(8.5.12, 8.4.27, 8.3.36, 8.2.35)로 업그레이드하십시오. CMS 플러그인(WordPress, Drupal, Laravel) 업데이트로는 PHP 코어 런타임 취약점을 고칠 수 없습니다.

플랫폼별 조치 가이드 선택 →
03

모든 PHP 데몬 재시작

핵심 단계: 워커 프로세스 풀이 재시작될 때까지 업그레이드된 바이너리는 메모리에 로드되지 않습니다. PHP-FPM, Apache, FrankenPHP, Swoole 및 큐 워커를 즉시 재시작하십시오.

sudo systemctl restart php*-fpm apache2
04

검증 및 로그 감사

활성 웹 서버가 패치된 버전을 반환하는지 확인하십시오. 2026년 10월 초 이후 비정상적인 multipart 업로드 충돌 로그를 감사하고 핵심 데이터베이스 및 API 키를 교체하십시오.

진단 검사 다시 실행 →

플랫폼 및 환경별 긴급 조치 가이드

인프라 환경에 맞춘 단계별 업데이트 명령어, 변경 로그 검증 및 서비스 재시작 절차.

서버 터미널 자체 점검 명령어

SSH를 통해 서버에 접속한 후 아래 명령어를 실행하여 실제 실행 중인 PHP 버전과 CVE 패치를 확인하십시오:

Ubuntu / Debian: 설치된 패키지 및 CVE 변경 로그 확인
dpkg -l 'php*' 'libapache2-mod-php*' | grep ^ii
zgrep -E "CVE-2026-10961[89]" /usr/share/doc/php*-common/changelog*
RHEL / AlmaLinux / Rocky Linux: RPM 변경 로그 점검
rpm -qa | grep -Ei "^(php|ea-php|alt-php)" | sort
rpm -q --changelog php-common | grep -E "CVE-2026-10961[89]"
Docker: 실행 중인 컨테이너 내부의 PHP 버전 확인
docker exec -it <container_name> php -v
docker exec -it <container_name> php -m | grep session

자주 묻는 질문 및 기술 답변 (FAQ)

검사기에서 버전이 숨겨져 있다고 나옵니다. 안전한 상태인가요? ▼

그렇지 않습니다. X-Powered-By를 숨기는 것은 버전 노출만 가릴 뿐 근본적인 취약점을 패치하지 못합니다. 서버에서 직접 자체 점검 CLI 명령어를 실행하십시오.

이 검사기가 내 사이트를 공격하거나 스캔하나요? ▼

전혀 그렇지 않습니다. HTTP 응답 헤더를 검사하기 위해 1회의 정상적인 GET 요청만 전송합니다. 익스플로잇 페이로드, POST 요청 본문 또는 경로 스캔은 일체 전송하지 않습니다.

오늘 당장 업그레이드할 수 없는 경우 임시 완화책이 있나요? ▼

있습니다. 전역 php.ini에서 session.upload_progress.enabled = Off로 설정하고 PHP-FPM을 리로드하면 주요 UAF 공격 경로를 차단할 수 있습니다. 하지만 php.net 공식 권고는 엔진 업데이트가 유일한 완전 해결책입니다.

패키지 업그레이드 후 PHP-FPM이나 Apache를 반드시 재시작해야 하는 이유는 무엇인가요? ▼

패키지 업데이트는 디스크의 파일만 바꿀 뿐입니다. 현재 실행 중인 PHP-FPM 및 Apache 워커 프로세스는 서비스가 재시작될 때까지 메모리에 취약한 코드를 그대로 유지합니다.

웹 방화벽(WAF)이 PHP2Shell을 완벽하게 차단할 수 있습니까? ▼

아닙니다. WAF 규칙이 알려진 익스플로잇 시그니처를 차단할 수는 있으나, 공격자가 multipart 바운더리 패딩이나 청크 크기를 조작하여 WAF 검사 임계값을 우회할 수 있습니다.

오래된 PHP 7.4 또는 8.0 사이트도 취약합니까? ▼

네. PHP 5.4부터 8.5까지의 모든 버전은 구조적으로 RFC1867 업로드 진행률 UAF 취약점을 안고 있습니다. 7.4와 8.0은 EOL 상태이므로 배포판 백포트를 적용하거나 upload_progress를 비활성화해야 합니다.

이 취약점이 커맨드라인 CLI 스크립트에도 영향을 미칩니까? ▼

multipart POST 요청을 처리하지 않는 순수 CLI 실행은 일반적으로 노출되지 않습니다. 그러나 웹을 통해 접근 가능한 SAPI(PHP-FPM, Apache mod_php, FrankenPHP, Swoole)는 완전히 취약합니다.

워드프레스 보안 플러그인으로 이 취약점을 막을 수 있나요? ▼

불가능합니다. 보안 플러그인은 PHP 엔진이 multipart 요청을 파싱한 후에 사용자 공간에서 실행됩니다. 이 취약점은 플러그인이 실행되기 전 네이티브 C 코드 레벨에서 발생합니다.

기술 보안 연구: 20편의 상세 권고문, C 소스 코드 분석 및 엔터프라이즈 방어 플레이북.