본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

PHP2Shell 원격 코드 실행 취약점

IT위키

PHP2Shell 원격 코드 실행 취약점(PHP2Shell Remote Code Execution Vulnerabilities)은 2026년 10월 공개된 PHP 실행 엔진의 메모리 처리 결함 2건을 통칭하는 보안 취약점으로, 인증되지 않은 외부 공격자가 조작된 HTTP 요청을 이용해 서버에서 임의의 코드를 실행할 수 있는 심각한 취약점이다.

PHP2Shell은 2026년 10월 21일 공개된 CVE-2026-109618 및 CVE-2026-109619를 통칭하는 명칭이다. 두 취약점 모두 PHP가 HTTP 요청을 처리하는 과정에서 메모리와 내부 상태를 부적절하게 관리하는 문제에서 비롯되며, 원격 코드 실행(RCE, Remote Code Execution)으로 이어질 수 있다.

PHP 개발팀은 두 취약점의 심각도를 모두 CVSS v4.0 기준 9.2점(Critical)으로 평가하고, 2026년 10월 21일 긴급 보안 업데이트를 발표했다.[1]

항목 내용
명칭 PHP2Shell
공개일 2026년 10월 21일
대상 PHP 실행 엔진
취약점 CVE-2026-109618, CVE-2026-109619
심각도 Critical
CVSS 9.2점(v4.0, 두 취약점 모두)
공격 유형 원격 코드 실행, 메모리 손상, Use-After-Free
인증 필요 여부 불필요
사용자 상호작용 불필요
주요 영향 서버 코드 실행, 민감정보 노출, 서비스 장애
대응 PHP 보안 업데이트 설치

일반적인 웹 애플리케이션 취약점과 달리 PHP2Shell은 애플리케이션의 PHP 코드 자체가 아니라 PHP 실행 엔진 내부에서 발생한다. 특히 일부 공격 경로에서는 워드프레스 등 웹 애플리케이션의 코드가 실행되기 전에 취약점이 발동할 수 있다.[1]

따라서 애플리케이션에서 입력값 검증이나 인증을 구현했더라도 취약한 PHP 실행 환경을 사용하고 있다면 공격에 노출될 수 있다.

발견 및 공개 경과

편집 원본 편집
  • 2026년 10월 20일
    • PHP 보안팀이 심각도 9.2점의 취약점 2건에 대응하는 긴급 보안 업데이트 배포를 예고했다.
    • 업데이트 예정 시각을 10월 21일 14:00 UTC(한국시간 23시)로 안내했다.[2]
  • 2026년 10월 21일
    • PHP 개발팀이 CVE-2026-109618 및 CVE-2026-109619의 기술적 내용을 공개했다.
    • PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 보안 업데이트를 배포했다.
    • 인증 없이 원격 코드 실행이 가능하며, 업데이트 외에 취약점을 완전히 해결하는 우회 조치가 없다고 밝혔다.[1]
    • 영국 NHS England와 네덜란드 국가사이버보안센터(NCSC-NL) 등에서도 관련 보안 정보를 발표했다.[3][4]
  • 2026년 10월 23일
    • PHP 개발팀이 세션 업로드 진행률 기능과 관련된 추가 잠재적 원격 코드 실행 경로에 대한 안내를 게시했다.
    • 특정 세션 직렬화 설정을 실행 중에 변경하는 특수한 조건에서 발생하는 별도 문제로, CVE-2026-115560이 부여될 예정이라고 설명했다.
    • 다음 정기 수정 버전이 배포되기 전까지 해당 조건에 노출되는 환경에서는 세션 업로드 진행률 기능을 비활성화하도록 권고했다.[5]

두 취약점은 모두 PHP의 요청 처리 과정에서 메모리의 유효성과 내부 상태의 일관성이 깨지는 문제이다.

메모리 부족 오류 처리 과정에서 발생하는 원격 코드 실행 취약점(RCE via OOM Corruption)이다.

PHP가 메모리 부족(OOM, Out of Memory) 오류를 처리할 때 내부 요청 데이터가 완전히 초기화되지 않은 상태로 실행 흐름이 중단될 수 있다.

이후 요청 종료 및 메모리 정리 과정에서 초기화되지 않은 데이터를 정상적인 구조체나 포인터로 취급하면서 메모리 손상이 발생한다.

  • 취약점 식별자: CVE-2026-109618
  • GitHub 보안 권고: GHSA-w8hw-w9fx-j79w
  • 심각도: Critical, CVSS v4.0 9.2
  • 주요 원인: 메모리 할당 실패 및 예외 처리 과정의 내부 상태 손상
  • 공격 결과: 인증 없는 원격 코드 실행

PHP는 메모리 부족이 발생했을 때 일부 실행 단계를 건너뛰어 상위 오류 처리 단계로 이동한다. 이 과정에서 미완성 상태로 남은 내부 데이터가 정리 단계에서 참조되는 것이 핵심적인 문제다.

연구진은 일반적인 PHP 입력 및 메모리 제한이 적용된 Apache mod_php 환경에서 HTTP를 통한 원격 코드 실행을 재현했다. 공격 성공 가능성과 안정성은 PHP 빌드, 확장 모듈, 메모리 할당 구조 등에 따라 달라질 수 있다.[6]

해제된 요청 메모리를 참조하는 전역 상태에 의한 원격 코드 실행 취약점(RCE via Stale Global State)이다.

PHP 내부의 일부 전역 상태는 개별 HTTP 요청에 할당된 메모리를 참조한다. 그러나 특정 오류 처리 과정에서는 요청이 종료되어 메모리가 해제된 이후에도 이러한 참조가 남을 수 있다.

같은 PHP 워커 프로세스가 새로운 요청을 처리하면서 이전 요청의 메모리 참조를 사용하면 Use-After-Free 유형의 메모리 손상이 발생할 수 있다.

  • 취약점 식별자: CVE-2026-109619
  • GitHub 보안 권고: GHSA-6wmf-4rv5-p3rp
  • 심각도: Critical, CVSS v4.0 9.2
  • 주요 원인: 요청 종료 후에도 유지되는 유효하지 않은 내부 상태
  • 공격 결과: 인증 없는 원격 코드 실행

이 취약점은 이전 요청에서 잘못된 상태를 남기는 동작과 이후 요청에서 해당 상태를 사용하는 동작이 결합하여 발생한다.

특히 장시간 실행되는 PHP 워커 프로세스에서 여러 HTTP 요청 사이에 내부 상태가 재사용되는 구조와 관련이 있다.[7]

취약한 PHP 버전

편집 원본 편집

PHP 개발팀은 다음 버전에 보안 패치를 적용했다.

PHP 계열 취약한 버전 수정 버전
PHP 8.5 8.5.11 이하 8.5.12
PHP 8.4 8.4.26 이하 8.4.27
PHP 8.3 8.3.35 이하 8.3.36
PHP 8.2 8.2.34 이하 8.2.35
PHP 8.1 이하 지원 종료 버전 배포판 또는 장기 지원 업체의 별도 패치 확인 필요

PHP 8.1 및 이전 버전은 PHP 프로젝트의 공식 보안 지원이 종료되어 해당 프로젝트에서 직접 보안 업데이트를 제공하지 않는다. 다만 운영체제 배포판이나 유료 장기 지원 업체가 별도로 수정 패치를 제공할 수 있다.[1]

운영체제 배포판은 기존 PHP 버전 번호를 유지하면서 보안 수정 사항만 반영하는 백포트(Backport)를 적용하기도 한다. 따라서 단순히 PHP 버전 번호만으로 취약 여부를 판단해서는 안 된다.

영향을 받는 실행 환경

편집 원본 편집

PHP 개발팀은 웹 요청을 처리하는 다음 환경을 잠재적 영향 대상으로 명시했다.

이 가운데 Apache mod_php 환경에서 애플리케이션 코드 실행 이전에 공격이 발동하는 사례가 입증되어 상대적으로 높은 위험이 있는 것으로 평가했다.[1]

또한 워드프레스, 드루팔, 줌라 등 PHP 기반 웹 애플리케이션도 취약한 PHP 실행 환경에서 구동될 경우 영향을 받을 수 있다. 영국 NHS England는 이들 제품이 통합된 환경에서 원격 코드 실행 실증이 이루어졌다고 설명했다.[3]

이는 해당 애플리케이션 자체에 반드시 별도의 결함이 있다는 뜻은 아니다.

공격 및 악용 가능성

편집 원본 편집

PHP2Shell의 대표적인 공격 결과는 서버 측 PHP 프로세스 권한으로 임의 코드를 실행하는 것이다.

성공적인 공격이 발생하면 실행 환경과 권한에 따라 다음과 같은 피해가 가능하다.

  • 웹 애플리케이션 파일 및 설정 정보 열람
  • 데이터베이스 접속 정보, API 키 등 민감정보 탈취
  • 서버 측 파일 변조 및 악성코드 설치
  • 웹사이트 변조
  • 서비스 중단 및 추가 시스템 침해

공격자가 처음부터 관리자 계정을 보유하거나 정상적인 인증 절차를 통과할 필요는 없다.

다만 서버 전체에 대한 관리자 또는 root 권한이 자동으로 획득되는 것은 아니며, 기본적으로 공격에 이용된 PHP 워커의 실행 권한에 영향을 받는다.[6]

실제 악용 현황

편집 원본 편집

2026년 10월 23일 기준 두 취약점의 원격 코드 실행 가능성은 보안 연구 및 실증 과정에서 확인되었다.

다만 원격 코드 실행 실증과 실제 공격자의 대규모 악용은 구분해야 한다. 공개된 취약점 실증 결과만으로 이미 광범위한 서버 침해나 정보유출이 발생했다고 단정할 수는 없다.

영국 NHS England는 실제 공격에 악용될 가능성을 높게 평가하고 보안 업데이트를 권고했다.[3]

보안 업데이트

편집 원본 편집

PHP2Shell에 대한 근본적인 대응은 취약점이 수정된 PHP 버전으로 업데이트하는 것이다.

PHP 개발팀은 임시 완화 설정이 일부 공격 경로를 차단할 수는 있지만 모든 공격 가능성을 제거하지는 못한다고 명시했다.[1]

  • PHP 8.5 → 8.5.12 이상
  • PHP 8.4 → 8.4.27 이상
  • PHP 8.3 → 8.3.36 이상
  • PHP 8.2 → 8.2.35 이상
  • PHP 8.1 이하 → 지원되는 PHP 버전으로 업그레이드하거나 별도 보안 패치 적용 여부 확인

PHP 8.2는 2026년 12월 31일 공식 보안 지원이 종료될 예정이므로 장기 운영 환경에서는 상위 버전으로의 전환도 고려해야 한다.[1]

임시 완화 조치

편집 원본 편집

즉시 업데이트하기 어려운 환경에서 PHP 개발팀이 제시한 주요 완화 조치는 다음과 같다.

대상 조치 유의사항
CVE-2026-109618 PHP의 memory_limit=-1 설정 검토 애플리케이션이 제어 가능한 PHP 메모리 제한 오류를 줄이는 조치이며, 실제 시스템 메모리 부족까지 방지하지는 못함
CVE-2026-109618 post_max_size와 업로드 요청 크기 제한 대용량 HTTP 요청과 복잡한 multipart 요청으로 인한 공격 표면 축소
CVE-2026-109619 session.upload_progress.enabled=0 확인된 세션 처리 공격 경로의 일부를 차단하며 설정 후 워커 재시작 필요
CVE-2026-109619 PHP 8.5에서 fatal_error_backtraces=0 확인된 오류 역추적 관련 공격 경로의 일부를 차단
공통 비정상적인 PHP 설정 및 오류 유발 코드 점검 요청 초기화와 종료 과정에서 발생하는 비정상 상태 최소화

메모리 제한을 해제하면 PHP 프로세스의 자원 사용량이 증가할 수 있으므로 운영체제나 컨테이너 수준의 메모리 관리와 함께 검토해야 한다.

또한 요청당 메모리 사용량을 제한하기 위한 일부 운영체제 자원 제한 설정은 오히려 취약한 메모리 할당 실패 경로를 발생시킬 수 있어 주의해야 한다.[6][7]

이러한 설정은 어디까지나 임시 완화 조치이며, 보안 패치 설치를 대체하지 않는다.

운영 환경별 점검

편집 원본 편집
  • 일반 리눅스 서버
    • 설치된 PHP 패키지의 버전과 보안 패치 상태 확인
    • 배포판 공급업체의 보안 공지 및 수정 패키지 확인
    • 업데이트 후 PHP-FPM 또는 웹 서버 프로세스 재시작
  • Amazon Linux
    • Amazon Linux 보안 공지와 PHP 관련 패키지의 수정 여부 확인
    • dnf updateinfo 등을 이용한 보안 업데이트 확인
    • 운영체제 릴리스 버전뿐 아니라 실제 설치된 PHP 패키지에 취약점 수정 사항이 포함되어 있는지 검증
  • 도커 및 컨테이너 환경
    • 컨테이너 이미지에 포함된 PHP 버전 확인
    • 수정된 기반 이미지로 재빌드 및 재배포
    • 기존 PHP 프로세스가 실행 중인 컨테이너 교체
  • 웹호스팅 및 관리형 서비스
    • 호스팅 제공업체의 패치 적용 여부 확인
    • 여러 PHP 버전이 제공되는 환경에서는 실제 사이트에 연결된 PHP 실행 버전 확인

특히 클라우드 서버에서 운영체제의 최신 업데이트를 적용했다는 사실만으로 취약점 해결을 보장할 수 없다. 별도 저장소에서 설치한 PHP, 직접 컴파일한 PHP, 컨테이너 이미지에 포함된 PHP 등은 각각 업데이트 상태를 확인해야 한다.

관련 보안 권고

편집 원본 편집

주요 기관 및 기업의 보안 권고는 다음과 같다.

기관 내용
PHP 개발팀 취약점 공개 및 긴급 보안 업데이트 배포
NHS England 원격 코드 실행 가능성과 실증 결과 안내 및 신속한 패치 권고
Red Hat PHP 요청 처리 메모리 손상 취약점에 관한 보안 공지 RHSB-2026-013 발행
Broadcom PHP2Shell 취약점 관련 보안 권고 및 제품 영향 평가
Plesk 자사 제공 PHP와 관리 구성요소의 영향 버전 및 수정 버전 안내

Red Hat은 관련 취약점을 PHP의 요청 처리 과정에서 발생하는 메모리 손상 문제로 설명하고, 자사 제품에 대한 수정 패치를 제공하고 있다고 밝혔다.[8]

Plesk는 자사에 포함된 PHP 실행 환경과 관리 인터페이스 구성요소의 영향 범위를 별도로 안내하고 보안 업데이트를 제공했다.[9]