WordPress 비인증 경로 순회 취약점, 조건에 따라 원격 코드 실행 가능
WordPress의 페이지 템플릿 탐색 과정에서 인증 없이 경로 순회를 일으켜 테마 디렉터리 밖의 PHP 파일을 불러올 수 있는 취약점이 발견됐습니다. 테마와 서버 설정 등 조건이 맞으면 원격 코드 실행으로 이어질 수 있으며, WordPress 7.1.2와 4.7 이후 각 브랜치에 수정 사항이 배포됐습니다.
WordPress의 페이지 템플릿을 찾는 과정에 인증 없이 악용할 수 있는 경로 순회 취약점이 있습니다. 공격자는 get_page_template()의 템플릿 탐색을 조작해 활성 테마 디렉터리 밖에 있는, 웹 서버 계정이 읽을 수 있는 로컬 PHP 파일을 불러오게 할 수 있습니다. 특정 테마와 서버 환경이 함께 갖춰지면 원격 코드 실행(RCE)으로 이어집니다.
악용에 필요한 조건
활성 부모 테마나 자식 테마의 최상위에 이름이 page-로 시작하는 디렉터리가 있어야 합니다. 예로 page-templates가 있으며, Twenty Twelve와 Twenty Fourteen 같은 레거시 기본 테마와 Neve, Hestia, Sydney 등 일부 서드파티 테마가 영향을 받습니다.
또 공격자가 지정한 로컬 PHP 파일이 서버에 존재하고 웹 서버 계정이 읽을 수 있어야 합니다. 권고문은 register_argc_argv가 On인 환경에서 pearcmd.php를 이용하는 경로를 예로 들었습니다. 공식 PHP Docker 이미지와 PHP 8.5 이전 버전을 사용하는 기본 cPanel 설정이 이 조건에 해당할 수 있습니다.
패치
WordPress 7.1.2에 수정 사항이 포함됐습니다. 이전 버전을 사용하는 이용자를 위해 4.7까지 모든 브랜치에도 수정 사항을 백포트했습니다. 취약점은 Robert Ressl이 발견해 책임 있게 공개했습니다.
Hacker News 반응
- @system2 —
pearcmd.php가 있어야 하고register_argc_argv도 켜져 있어야 하므로 호스팅 업체에서 흔한 설정은 아닙니다. 다만 다른 테마와 조건까지 고려하면 영향을 받는 WordPress 사이트가 많을 수 있다고 봅니다.- @dofm — 글에서 지적했듯 공식 PHP Docker 컨테이너가 해당 설정을 사용합니다. 이론상 영향받는 버전은 자동 업데이트될 수 있지만, 4.7까지 실제로 자동 업데이트하는지는 확실하지 않습니다. 4.9.3은 자동 업데이트 기능에 버그가 있어 예외입니다.
- @tptacek — CVSS 점수는 의미가 없으며, 헤드라인에서 사라지는 편이 낫습니다. 일부 상황에서만 발생하고 몇몇 테마에 영향을 주는 WordPress RCE입니다.
- @paulez — 특정 조건을 만족하는 취약한 WordPress 환경에서 누구나 네트워크를 통해 코드를 실행할 수 있다는 뜻입니다. 그렇지 않습니까?
- @tptacek — 취약점이 심각하지 않거나 WordPress 운영자에게 중요하지 않다고 말하는 게 아닙니다. CVSS 점수는 평가자가 원하는 대로 나올 수 있는 점술판과 같습니다.
- @vntok — 영향을 받는 테마가 몇 개뿐이라는 말은 위험할 정도로 틀렸습니다. 테마 최상위에
page-로 시작하는 디렉터리를 두는 조건은 WordPress 공식 문서가 권장하는 구성입니다.- @dawnerd — 기본 제공 테마도 취약하고 PHP 8.5 이전 공식 Docker 이미지도 기본 설정에서 영향을 받습니다. 여러 호스팅 업체가 내부에서 이 이미지를 쓸 가능성도 있습니다.
- @whycome — 아주 오래된 테마가 예상치 못하게 업데이트된 이유가 이 취약점 때문일 수 있겠습니다.
- @patrickdavey — 패치 적용과 테마 취약성 확인을 둘 다 해야 하는지 확실하지 않습니다. 패치 자체를 보니 근본 원인을 고치는 듯해 테마 구성은 상관없을 것 같지만, 잘 읽었는지는 모르겠습니다.
- @chrismorgan — WordPress 7.1.1과 수정 버전의 비교 및 패치 커밋 링크를 공유했습니다.
- @mgkimsal — 수정 내용을 보여주는 테스트가 있었으면 좋았겠습니다.
원문: Hacker News / 번역·요약: Trawling