PHP2Shell: AI가 인터넷의 70%에 영향을 미치는 치명적인 RCE 취약점을 발견
Wiz Research는 핵심 PHP에서 여러 치명적인 메모리 안전 취약점을 발견했습니다. 이 취약점은 전 세계 웹사이트의 약 70%에 영향을 미치며, 인증되지 않은 공격자가 원격 코드 실행(RCE)을 달성하거나 민감한 프로세스 메모리를 노출할 수 있게 합니다.
이 취약점들은 두 개의 CVE(CVE-2026-109618 및 CVE-2026-109619)로 그룹화되며, PHP가 치명적인 오류와 메모리 할당을 처리하는 방식의 근본적인 아키텍처 결함에서 비롯됩니다. 이러한 발견은 최첨단 AI 모델의 적용으로 크게 가속화되었습니다.
취약점 개요 및 영향
공개된 모든 PHP2Shell 취약점은 핵심 엔진이 치명적인 오류, 특히 메모리 부족 조건을 관리하는 방식에 뿌리를 둔 메모리 안전 문제입니다. 이러한 버그는 손상되거나 오래된 내부 PHP 상태를 남기며, 동일한 작업자 프로세스가 처리하는 후속 요청에 의해 악용될 수 있습니다.
이 결함은 PHP 엔진 자체에 존재하므로 애플리케이션에 구애받지 않고 악용될 수 있기 때문에 영향이 심각합니다. 취약한 PHP 버전은 WordPress, Drupal 또는 Joomla와 같은 상위 애플리케이션이 완벽하게 안전하더라도 악용될 수 있습니다.
- 원격 코드 실행(RCE): 공격자는 영향을 받는 서버에서 사전 인증 RCE를 달성할 수 있습니다. 이는 최신 컨테이너 이미지를 사용하여 WordPress, Drupal 및 Joomla에 대해 시연되었습니다.
- 메모리 노출: 공격자는 RCE를 달성하지 않고도 PHP 프로세스 메모리에서 민감한 데이터를 읽을 수 있습니다. 이 메모리에는 다른 요청 또는 서버 자체에 속한 비밀번호, 인증 토큰, API 키 및 인증서가 포함될 수 있습니다.
PHP2Shell 버그에 대한 기술적 심층 분석
이 취약점들은 PHP 런타임 내의 특정 타이밍 및 상태 관리 문제를 악용합니다. PHP에 보고된 네 가지 악용 가능한 버그 인스턴스는 엔진이 요청 종료 및 메모리 재사용을 처리하는 방식과 관련된 문제가 있는 패턴을 따릅니다.
업로드 진행 역직렬화기 use-after-free
이 버그는 PHP의 Session 모듈이 업로드 진행 처리 중에 세션 데이터를 디코딩할 때 발생합니다. 치명적인 할당 실패가 이 프로세스를 중단시켜 요청 힙을 파괴하고 역직렬화기의 전역 상태를 게시된 상태로 남길 수 있습니다. 이후 요청이 이 공격자가 회수한 메모리를 소비하여 오래된 상태를 메모리 손상 프리미티브로 전환할 수 있으며, 이는 인증되지 않은 RCE를 달성하기 위해 메모리 노출과 결합되었습니다.
원격 프로세스 메모리 노출
요청 시작 중에 PHP는 RFC1867 multipart 요청을 구문 분석합니다. 메모리 부족 오류가 정리 완료 전에 요청을 중단하면 PHP는 해제된 메모리를 가리키는 세션 ID 포인터를 남길 수 있습니다. 동일한 작업자가 처리하는 후속 multipart 요청이 이 오래된 포인터에 액세스하여 PHP가 회수된 힙 내용을 신뢰하고 이를 PHPSESSID 응답 쿠키로 URL 인코딩하여 인증되지 않은 메모리 노출로 이어질 수 있습니다.
치명적인 오류 역추적 use-after-free
영향을 받는 버전에서 PHP는 가장 최근 치명적인 오류의 역추적을 유지합니다. 치명적인 메모리 부족 오류는 이 실행기 전역 값을 정의 해제하지 않고 요청 힙을 파괴할 수 있습니다. 동일한 작업자가 다음 요청 초기에 진단을 내보내면 매달린 역추적 포인터에 액세스할 수 있으며, 이는 공격자가 회수한 메모리를 가리킬 수 있어 통제된 메모리 손상 및 RCE를 가능하게 합니다.
OPcache 유형 혼동
OPcache는 컴파일된 PHP 구조를 공유 메모리에 유지합니다. 지속 프로세스 중 할당 실패는 공유 상태가 여전히 메모리 슬롯을 사용 가능한 것으로 간주하는 동안 프로세스 로컬 상태를 진행시킬 수 있습니다. 다른 작업자가 이러한 슬롯 중 하나를 재사용하면 오래된 공유 메타데이터가 잘못된 유형의 포인터로 확인되어 작업자 간 유형 혼동을 일으키고 공유 OPcache 상태를 손상시켜 WordPress에 대한 인증되지 않은 RCE 체인을 구축하는 데 사용되었습니다.
취약점 발견의 AI 변곡점
최첨단 AI 모델은 오랜 기간 존재해 온 복잡한 결함을 실용적이고 확장 가능한 익스플로잇으로 전환하는 데 중요했습니다. 기본 코드 결함은 10년 이상 존재했지만, 이를 작동하는 익스플로잇으로 전환하려면 여러 버그를 연결하고 각 대상 배포의 고유한 메모리 레이아웃에 적응해야 했습니다.
AI 이전에는 다양한 구성에 걸친 광범위한 분석, 테스트 및 디버깅을 포함하는 이 수동 작업은 구현하고 확장하기가 극히 어려웠을 것입니다. AI를 사용하면 대규모 언어 모델(LLM)이 익스플로잇을 다양한 PHP 버전, 구성 및 메모리 레이아웃에 적용할 수 있습니다. 이는 다양한 배포에 걸쳐 공격을 확장하는 장벽을 크게 낮춥니다.
이러한 발전은 취약점 발견과 악용의 경제성을 변화시킵니다. AI가 복잡한 익스플로잇을 개발하고 적용하는 데 필요한 노력을 줄임에 따라 이전에 비현실적인 대상으로 간주되었던 취약점이 실행 가능해집니다.
Gemini 4 Argon을 사용하여 Wiz 팀은 최첨단 AI가 사이버 방어에 게임 체인저인 이유를 보여주었습니다. 10년 이상 동안 이러한 치명적인 취약점은 취약점 발견과 악용이 매우 복잡했기 때문에 해결되지 않은 채로 남아 있었습니다. Gemini 4 Argon이 방어자가 그 격차를 메우고 취약점을 찾아 패치하는 데 도움을 주는 것을 보게 되어 기쁩니다. (Raluca Ada Popa, Google DeepMind Gemini 보안 책임자)
책임 있는 공개 및 업계 대응
Wiz Research는 PHP 팀, Calif 및 OpenAI와 공개 프로세스를 조정했습니다. PHP2Shell 공개 타임라인은 다음과 같습니다:
- 2026년 8월 19일: Wiz Research는 Wiz Atlas, Gemini 4 Argon 및 GPT-5.6 Sol을 사용하여 첫 번째 PHP 취약점을 발견했습니다.
- 2026년 8월 24일: Wiz Research는 취약점을 PHP 보안 팀에 보고했습니다.
- 2026년 10월 21일: 패치된 PHP 릴리스가 제공되고 공개 공개가 이루어졌습니다.
광범위한 영향으로 인해 Cloudflare, AWS, Microsoft 및 Google을 포함한 업계 파트너는 패치를 즉시 적용할 수 없는 고객을 위한 지침과 즉시 사용 가능한 완화 조치를 준비하는 데 도움을 주었습니다.
완화 및 방어
PHP2Shell에 대한 유일한 완전한 해결책은 2026년 10월 21일에 PHP 팀이 발표한 보안 업데이트를 적용하는 것입니다. 시스템이 패치될 때까지 방어자는 악용 시도를 암시하는 특정 침해 지표(IOC)를 모니터링해야 합니다:
- 메모리 제한 오류 또는 반복적인 HTTP 500 응답이 뒤따르는 비정상적인 multipart 요청.
- 예기치 않게 크거나 잘못된 형식의
PHPSESSID응답 쿠키. - 설명할 수 없는 PHP 작업자 변동.
방어자는 Wiz Defend 및 Sensor를 통한 에이전트 없는 런타임 취약점 탐지 및 악용 탐지를 위한 기본 제공 범위에 대해 Wiz Threat Intel Center 권고를 참조해야 합니다.
Sources
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch