개요

WordPress Core 7.1.2 이전 버전의 get_page_template() page-template 해결 과정에서, 인증되지 않은 공격자가 활성 테마 디렉터리 밖의 읽을 수 있는 로컬 .php 파일 포함을 유도하는 경로 추적 취약점(CVE-2026-87902)이다. WordPress 공식 보안 자문문(GHSA-7hp8-65ch-5whp)은 이를 경로 추적(path traversal)을 통한 로컬 파일 포함 및 조건부 RCE로 기술한다.
- 공격자: 인증 불필요
- 결과: 활성 테마 디렉터리 밖 로컬 .php 파일 포함, 전제 조건 두 가지가 모두 충족되면 RCE
- 수정: WordPress 7.1.2에 포함, 4.7으로까지 모든 구버전 브랜치에 백포트
- 상태: 2026-09-25 CISA KEV 등재, Patchstack은 실제 악용 평가
- 위험도: Patchstack이 CVSS 9.2(Critical)로 평가(이차 분석 기준)
영향 범위
RCE로 발전하기 위해선 사이트마다 다른 두 가지 환경 조건이 필요하다.
- WordPress Core 7.1.2 이전 버전 사용
- 활성(부모 또는 자식) 테마에 이름이 page-로 시작하는 최상위 디렉터리(예: page-templates)가 존재. 레거시 Twenty Twelve, Twenty Fourteen 테마와 일부 인기 제3자 테마(Neve, Hestia, Sydney 등)가 해당하며, 이 목록은 '일부 인기 제3자 테마'의 예시일 뿐 영향 받는 테마의 완결 목록이 아니다
- 서버에 웹 서버 계정이 읽을 수 있는 선택된 로컬 .php 대상 파일이 존재
- register_argc_argv가 On으로 설정된 PHP 환경. pearcmd.php의 PEAR→RCE 전환이 대상 파일로 활용 가능하며, Docker 공식 php 이미지 기반 환경도 영향
기술적 분석
취약점의 원인은 get_page_template()의 page-template 해결 로직에 있다. 공격자는 해결 과정이 활성 테마 디렉터리 밖의 선택된 로컬 .php 파일을 포함하도록 조작할 수 있다. RCE로 발전하려면 두 전제 조건이 모두 성립해야 한다.
첫째, 활성(부모 또는 자식) 테마에 이름이 page-로 시작하는 최상위 디렉터리(예: page-templates)가 존재해야 한다. 둘째, 서버에 웹 서버 계정이 읽을 수 있는 선택된 로컬 .php 대상 파일이 존재해야 한다. register_argc_argv가 On으로 설정된 환경에서는 잘 알려진 pearcmd.php의 PEAR→RCE 전환이 이 대상 파일로 사용될 수 있다. 두 조건이 동시에 성립하면 포함된 파일이 실행되어 RCE가 된다.
RCE가 조건부(conditional) 결과라는 점이 점검 범위를 결정한다. 테마에 page- 최상위 디렉터리가 없거나 서버에 웹 서버 계정이 읽을 수 있는 대상 .php 파일이 없는 환경에서는 이 취약점으로 원격 코드 실행까지 이어지지 않을 수 있다. 이 두 조건이 실제로 확인되는 사이트는 같은 패치 대상이라도 점검 우선순위를 높일 필요가 있다.
악용 상황
CISA KEV 카탈로그에 2026-09-25 등재되었으며, Patchstack은 패치 공개 수 시간 뒤부터 WordPress 사이트를 향한 탐사 트래픽을 확인했다. 탐사 트래픽의 성격과 유통 범위, 운영적 의미는 아래 공개 PoC·익스플로잇 분석에서 설명한다.
공개 PoC·익스플로잇 분석
공개 PoC 근거는 Patchstack의 분석에서 확인된다. Patchstack은 패치 공개 수 시간 뒤 관찰된 WordPress 사이트 탐사 트래픽에서 cve-2026-87902-poc/1.0과 nuclei-cve-2026-87902/1.0이라는 두 사용자 에이전트를 식별했으며, 이름이 붙은 Nuclei 템플릿(nuclei-cve-2026-87902/1.0) 형태로 유통되고 있다는 점을 근거로 이 취약점의 익스플로잇이 패치 차이를 직접 읽는 소수 운영자의 영역을 벗어나 일반화(commoditised)되어 누구나 대상을 지목해 사용할 수 있는 수준에 이르렀다고 평가한다.
- 출처: Patchstack의 패치 이후 탐사 트래픽 분석(이차 분석 자료). WordPress 공식 자문문(GHSA)은 취약점 메커니즘과 전제 조건을 기술하며, Patchstack은 그 악용 상황과 유통 현황을 보고한다.
- 전제 조건: 공개 도구로 유통된다고 해서 전제 조건이 사라지지는 않는다. RCE로 성립하려면 여전히 활성 테마의 page- 최상위 디렉터리와, 서버에서 웹 서버 계정이 읽을 수 있는 .php 대상 파일이라는 두 조건이 동시에 충족되어야 한다.
- 입증 범위: 이 근거가 입증하는 것은 패치 공개 수 시간 이후의 탐사·스캔 트래픽과, 이름이 붙은 Nuclei 템플릿이 패치 차이를 직접 읽는 소수 운영자의 영역을 넘어 일반적 유통(general circulation) 단계에 이르렀다는 점이다.
- 운영상 의미: 도구 유통이 광범위하다는 점을 감안하면 두 조건을 충족하는 사이트는 패치가 곧 최우선 대응이다. 탐사 지표로는 사용자 에이전트 cve-2026-87902-poc/1.0과 nuclei-cve-2026-87902/1.0의 감시, 그리고 호스트의 /tmp·/var/tmp에서 의도치 않은 .php 파일 존재 점검을 사용할 수 있다.
대응 방안
패치가 최우선이고, 그 뒤에 환경 조건 점검과 탐지를 진행하는 것이 이 취약점의 대응 순서다.
즉시 패치
- WordPress를 7.1.2(또는 해당 구버전 브랜치의 백포트 버전)으로 즉시 갱신. Patchstack이 최우선·긴급 대응으로 권고
- 구버전 브랜치 사이트는 4.7까지 백포트된 패치를 적용
환경 조건 점검
- 활성 테마에 최상위 page- 디렉터리(예: page-templates)가 있는지 확인
- 레거시 Twenty Twelve, Twenty Fourteen 또는 Neve, Hestia, Sydney 등 테마 사용 사이트는 즉시 점검 대상에 포함
- register_argc_argv가 On으로 설정된 PHP 환경, 특히 pearcmd.php가 존재하는 곳은 RCE 전환 경로에 해당하므로 확인
- Docker 공식 php 이미지 기반 컨테이너를 사용하는 WordPress는 영향을 받을 수 있는 환경으로 보고, pearcmd.php 존재와 register_argc_argv 설정을 함께 확인한다
탐지
- 웹 접근 로그에서 사용자 에이전트 cve-2026-87902-poc/1.0 및 nuclei-cve-2026-87902/1.0 기반 탐사·스캔 감시
- page-template 관련 요청 경로를 통해 활성 테마 밖 로컬 .php 파일의 포함을 시도하는 이상 요청 탐지
- 호스트의 /tmp와 /var/tmp에서 의도치 않은 .php 파일 존재 점검. 발견 시 공격의 후기 단계(stage three)가 성공적으로 진행되었음을 의미하는 지표
한계
- RCE는 두 전제 조건이 모두 충족되어야 성립하며, 어느 하나만 성립하는 환경에서는 원격 코드 실행으로 이어지지 않을 수 있다
- Patchstack의 호스트 조치 권고 문구가 원문에서 절단되어, /tmp·/var/tmp의 .php 파일 발견 시 취할 정확한 대응 절차 전문은 출처로 재확인할 것을 권고한다
- CVSS 9.2(Critical) 및 실제 악용 평가는 Patchstack 등 이차 분석에 기반하며, WordPress 공식 자문문(GHSA)은 취약점 메커니즘과 전제 조건을 기술한다
- 4.7으로까지 백포트된다는 점은 확인되었으나, 현재 유지보수되는 구버전 브랜치의 구체적인 범위는 추가 확인이 필요하다
- cPanel 관련 근거 인용이 원문에서 'default cPanel' 부분에서 절단되어, 기본 cPanel 환경의 정확한 영향 범위는 원자료로 추가 확인이 필요하다
참고자료
- CVE-2026-87902 (CVE Record 5.2)
- GHSA-7hp8-65ch-5whp: Unauthenticated path traversal in page-template resolution leading to conditional RCE
- Known Exploited Vulnerabilities Catalog — CVE-2026-87902
- CVE-2026-87902: Attackers Started Probing WordPress Sites Hours After the Patch
함께 읽으면 좋은 글
- CVE-2015-3246: libuser의 /etc/passwd 직접 수정 결함과 영향 버전 Linux 자산 점검
- CVE-2021-23758: Ajax.NET Professional 역직렬화 취약점의 레거시 .NET 자산 점검
- CVE-2019-1068: Microsoft SQL Server 원격 코드 실행 취약점과 레거시 인스턴스 점검
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!