🔍 CVE-2026-115938

8.8
CVSS Score
HIGH
2026-10-23
2026-10-23 22:16
✅ 완료

🇰🇷 한글 설명

Craft CMS에서 인증된 컨트롤 패널 사용자가 요소 검색 조건을 통해 샌드박스 Twig 템플릿을 실행할 수 있습니다. 이로 인해 샌드박스를 우회하여 보안 키를 한 글자씩 추출하고, 이를 이용해 서명된 파라미터로 승인되지 않은 네이티브 PHP 콜백을 호출할 수 있습니다.

💡 쉬운 설명

로그인한 관리자 계정을 가진 사용자가 시스템 내부의 숨겨진 비밀 키를 조금씩 알아낼 수 있습니다. 이 키를 얻으면 보안 검사를 피해 서버에서 의도하지 않은 기능을 실행할 수 있습니다.

🇺🇸 원문 (English)

Craft CMS allows any authenticated control panel user to submit an element-search condition whose element selector is evaluated as a sandboxed Twig object template. Craft’s allowed column filter delegates property lookup to Yii ArrayHelper, outside Twig’s SecurityPolicy. Repeated single-segment lookups therefore bypass the sandbox’s empty property/method allowlists. The vulnerable condition value is ultimately cast to an integer. That does not protect the secret: the template can return author ID 1 when a guessed key character is correct and an impossible ID otherwise. The JSON endpoint returns entries for the first case and an empty array for the second, forming a stable remote character oracle. After recovering GeneralConfig::securityKey, the same user can compute Craft’s generic HMAC wire format offline. Signed parameters such as redirect are then accepted and passed to unsandboxed View::renderObjectTemplate(), where Twig’s string-callable form can invoke native PHP callables. The regression proof uses the harmless substr() callback and observes abcdef becoming cdef; it does not execute an OS command.

📍 영향받는 시스템

Craft CMS (취약 버전 및 패치 버전은 공식 보안 권고 확인 필요)

⚔️ 공격 벡터

인증된 컨트롤 패널 사용자가 요소 검색 조건에 템플릿을 주입해 보안 키를 추출한 뒤 서명된 파라미터로 unsandboxed 템플릿 렌더링을 호출

🛡️ 대응 방법

Craft CMS를 공식 패치 버전으로 즉시 업그레이드하고, 컨트롤 패널 사용자 권한을 최소화하며, 보안 키를 교체

🔧 검증 코드

출력된 설치 버전을 Craft CMS 공식 보안 권고의 취약 버전 범위와 비교하여, 해당 범위에 포함되면 취약하고 패치 버전 이상이면 조치가 완료된 것입니다.

Shell / Script
composer show craftcms/cms 2>/dev/null | grep -E 'versions|name'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

PHP