워드프레스 보안팀이 9월 22일(현지시간) 워드프레스 7.1.2를 배포하고, 인증 없이 악용 가능한 치명적 취약점 CVE-2026-87902(GHSA-7hp8-65ch-5whp)를 수정했다.
페이지 템플릿을 고르는 과정에서 활성 테마 디렉터리 밖의 PHP 파일을 끌어들일 수 있는 경로 탐색 버그로, 서버와 테마 조건이 맞으면 원격코드실행(RCE)으로 이어진다. 보안팀은 4.7까지 모든 보안 지원 브랜치에 수정을 백포트했다.
- 워드프레스 4.7.0부터 7.1.1까지가 영향 범위이며, 7.1.2·7.0.6·6.9.9 등 브랜치별 패치 버전이 함께 나왔다. CVSS v4 점수는 9.2(Critical)다.
- 로그인 없이
get_page_template()의 템플릿 해석이 테마 밖의 읽을 수 있는 .php 파일을 include하게 만들 수 있다. - 테마에
page-로 시작하는 최상위 폴더가 있고, pearcmd.php처럼 악용 가능한 PHP 파일이 서버에 있으면 RCE가 된다. 공식 PHP 도커 이미지와 PHP 8.5 미만의 기본 cPanel 설정이 해당된다.
WHAT HAPPENED무슨 일이 있었나
워드프레스 뉴스에 올라온 7.1.2 릴리스 공지는 짧다. "치명적 심각도의 보안 취약점 하나를 고친 보안 릴리스"이며 즉시 업데이트를 권한다는 내용이다. 자동 백그라운드 업데이트를 지원하는 사이트는 업데이트가 자동으로 시작된다고 덧붙였다. 릴리스는 존 블랙본(John Blackbourn)이 이끌었고, 취약점은 Robert Ressl이 책임 있는 공개 절차로 제보했다.
세부 내용은 깃허브의 wordpress-develop 저장소 보안 권고(GHSA-7hp8-65ch-5whp)에 있다. 권고에 따르면 비인증 공격자가 get_page_template()의 페이지 템플릿 해석 과정을 조작해, 활성 테마 디렉터리 바깥에 있는 읽기 가능한 로컬 .php 파일을 include시키는 것이 가능했다. 약점 분류는 CWE-98(PHP include/require 구문의 파일명 제어 부적절)이다. 이것만으로는 "파일을 읽어 실행시키는 것"에 그치지만, 서버 환경과 활성 테마 두 쪽의 전제 조건이 맞으면 원격코드실행으로 연결된다.
SCOPE영향 범위와 전제 조건
CVSS 벡터는 네트워크 공격, 낮은 공격 복잡도, 권한 불필요, 사용자 상호작용 불필요로 매겨졌다. 다만 "공격 요구사항(AT)"이 Present로 표시돼 있다. 아무 사이트나 바로 뚫리는 것은 아니고, 아래 두 조건이 갖춰져야 RCE까지 간다는 뜻이다.
pearcmd.php는 PHP 보안 쪽에서 오래 알려진 "LFI를 RCE로 바꾸는 발판"이다. 파일 포함 취약점이 있고 register_argc_argv가 켜져 있으면, URL 쿼리를 PEAR 명령 인자로 넘겨 임의 파일을 쓰게 만드는 식이다. 이번 권고는 이 기법이 그대로 통하는 환경으로 공식 PHP 도커 이미지와 PHP 8.5 이전 기본 cPanel을 명시했다. 도커로 워드프레스를 돌리는 개발자, 그리고 공유 호스팅 상당수가 해당될 수 있다는 얘기다.
왜 하필 page-로 시작하는 폴더가 조건일까. 워드프레스의 템플릿 계층 구조에서 고정 페이지는 page-{슬러그}.php, page-{ID}.php, page.php 순으로 테마 안의 파일을 찾는다. 권고는 정확한 공격 문자열이나 내부 동작을 공개하지 않았지만, 템플릿 이름을 조립하는 과정과 테마 최상위의 page- 디렉터리가 맞물리는 지점에서 경로가 테마 밖으로 빠져나가는 구조로 읽힌다. 세부 기법이 공개되지 않았다고 해서 안심할 일은 아니다. 워드프레스는 오픈소스라 수정 코드가 공개 저장소에 반영되는 순간 누구나 변경점을 비교해 볼 수 있다.
PATCHES패치 버전과 배경
수정은 7.1.2에 들어갔고, 보안팀은 "예의 차원에서" 보안 수정을 받을 자격이 있는 모든 브랜치, 현재 기준 4.7까지 백포트했다. 브랜치별 패치 버전은 7.1.2, 7.0.6, 6.9.9, 6.8.10, 6.7.9, 6.6.9, 6.5.12, 6.4.12, 6.3.12, 6.2.13, 6.1.14, 6.0.16, 5.9.18 등이며 가장 오래된 것은 4.7.37이다. 공지는 동시에 "적극적으로 지원되는 것은 가장 최신 버전뿐"이라는 점도 다시 상기시켰다.
타이밍도 눈여겨볼 만하다. 워드프레스는 불과 닷새 전인 9월 17일 11건의 보안 수정을 담은 7.1.1을 냈다. 7.1.1로 올렸다고 안심한 운영자도 이번에는 다시 업데이트해야 한다. 이 보안 권고는 공개 당일 해커뉴스 첫 화면에도 올랐다.
ACTION운영자가 지금 할 일
wp core version으로 현재 버전을 보고, 7.1.2 또는 사용 중인 브랜치의 패치 버전 이상인지 확인한다. 자동 업데이트가 꺼진 사이트는 수동으로 올린다.page-로 시작하는 디렉터리가 있는지 본다. Twenty Twelve·Twenty Fourteen이나 Neve·Hestia·Sydney를 쓰면 우선순위를 높인다.도커로 워드프레스를 운영하는 경우는 한 번 더 신경 써야 한다. 컨테이너 안의 워드프레스 파일이 볼륨에 들어 있다면 관리 화면의 자동 업데이트가 동작하지만, 이미지 태그를 고정해 두고 코어를 이미지와 함께 배포하는 구성이라면 새 이미지를 받아 다시 띄우기 전까지 취약한 상태가 유지된다. 공유 호스팅 사용자는 호스팅사가 자동 업데이트를 막아 두지 않았는지, 관리 패널의 PHP 버전이 몇인지 확인해 두는 편이 좋다.
wp core update와 wp core verify-checksums를 함께 돌려, 업데이트와 동시에 코어 파일이 변조되지 않았는지까지 확인할 수 있다.자주 묻는 질문
CVE-2026-87902는 어떤 워드프레스 취약점인가?
로그인하지 않은 공격자가 페이지 템플릿 해석 함수 get_page_template()을 조작해 활성 테마 밖의 로컬 PHP 파일을 include시킬 수 있는 경로 탐색 취약점이다. 특정 테마와 서버 조건이 맞으면 원격코드실행으로 이어지며, CVSS v4 점수는 9.2다.
어떤 워드프레스 버전이 영향을 받고, 어디로 올려야 하나?
4.7.0부터 7.1.1까지 영향을 받는다. 최신 브랜치는 7.1.2로, 7.0 브랜치는 7.0.6, 6.9 브랜치는 6.9.9 식으로 각 브랜치의 패치 버전으로 올리면 되며 가장 오래된 패치는 4.7.37이다.
워드프레스를 패치하지 않으면 무조건 해킹되나?
그렇지는 않다. 활성 테마에 page-로 시작하는 최상위 디렉터리가 있고, pearcmd.php처럼 악용 가능한 PHP 파일이 읽을 수 있는 상태로 서버에 있어야 RCE까지 간다. 그러나 공식 php 도커 이미지와 PHP 8.5 미만 기본 cPanel이 서버 조건을 충족하므로 즉시 업데이트가 권장된다.
register_argc_argv는 왜 끄라고 하나?
이 설정이 On이면 웹 요청의 쿼리 문자열이 스크립트 인자로 전달돼, pearcmd.php 같은 CLI용 스크립트를 웹에서 악용할 여지가 생긴다. 파일 포함 취약점을 원격코드실행으로 키우는 대표적인 발판이라, 웹 서버에서 필요 없다면 Off로 두는 것이 안전하다.

댓글 0