
CraftCMS는 제어판의 관계형 조건문을 통해 RCE 취약점이 존재합니다
CVE-2026-31857은 Craft CMS의 관계형 조건 규칙에서 발생하는 원격 코드 실행 취약점입니다. BaseElementSelectConditionRule::getElementIds()는 사용자가 제어하는 입력을 샌드박스가 적용되지 않은 Twig 템플릿으로 렌더링합니다. 인증된 제어판 사용자는 요소 목록 엔드포인트를 통해 조작된 조건을 제출하여 서버에서 명령을 실행할 수 있습니다. 관리자 권한은 필요하지 않습니다.
Craft CMS 4.0.0-beta.1부터 4.17.3까지, 그리고 5.0.0-RC1부터 5.9.8까지가 영향을 받습니다. 이 PoC는 Craft 5의 element-index 요청 형식을 사용합니다.
표준 라이브러리만 포함된 Python 3가 필요합니다. 기본 URL과 제어판 사용자 이름을 제공하면 스크립트가 비밀번호를 묻습니다:
python3 poc.py https://craft.example editor
cmd>에서 명령을 입력하거나 exit를 입력하여 종료합니다. 현재 작업 디렉터리는 명령 간에 유지됩니다. 장시간 실행되는 명령을 시작하려면 명령 끝에 &를 붙이십시오. 해당 명령의 입력과 출력은 HTTP 요청에서 분리되며 출력은 폐기됩니다. 응답 헤더를 통해 반환되는 명령 출력은 마지막 1200바이트로 제한됩니다.