🔍 CVE-2026-114622

7.2
CVSS Score
HIGH
2026-10-23
2026-10-23 16:28
✅ 완료

🇰🇷 한글 설명

baserCMS의 선택적 플러그인 BcThemeFile의 Admin API에서, 경로 검증이 rawurldecode() 디코딩 이전에 수행되어 퍼센트 인코딩된 디렉터리 순회(path traversal)를 통해 테마 디렉터리 밖에 파일을 쓸 수 있습니다. 인증된 관리자는 이를 이용해 webroot 등에 PHP 파일을 기록하고 실행할 수 있습니다. 5.2.3~5.3.2 미만, 5.4.0~5.4.2 미만 버전에 영향을 주며 5.3.2 및 5.4.2에서 패치되었습니다.

💡 쉬운 설명

관리자 권한을 가진 사용자가 경로 검사를 우회해 허용되지 않은 위치에 웹 실행 파일을 만들 수 있는 취약점입니다. 이를 통해 서버를 장악할 수 있으므로 즉시 업데이트해야 합니다.

🇺🇸 원문 (English)

baserCMS is a website development framework. In versions 5.2.3 before 5.3.2 and 5.4.0 before 5.4.2, the optional BcThemeFile plugin's Admin API validates a raw path in ThemeFilesService::update() and getFullpath(), but ThemeFileForm::_execute() subsequently applies rawurldecode() to fullpath before writing. Because normalizePath() resolves only literal dot segments, percent-encoded traversal can pass the containment checks and become a path outside the theme directory at the write sink. An authenticated administrator can write PHP files into writable locations such as webroot and execute them, exceeding the intended theme-template editing boundary. The source also identifies the same check-before-decode ordering in ThemeFilesService::copy(), although that path was not dynamically verified. Exploitation requires the non-default plugin, an administrator session, and a same-origin Origin header; USE_CORE_ADMIN_API=false does not block session-authenticated requests. The Admin web form is not affected by this encoded-path tampering because FormProtection protects fullpath. This is a third bypass of the protections associated with CVE-2026-30940, using encoded traversal decoded after validation. This issue has been patched in versions 5.3.2 and 5.4.2.

📍 영향받는 시스템

baserCMS 5.2.3 이상 5.3.2 미만, 5.4.0 이상 5.4.2 미만 (BcThemeFile 플러그인 사용 시)

⚔️ 공격 벡터

인증된 관리자 세션과 동일 출처 Origin 헤더를 이용해 퍼센트 인코딩된 ../ 경로로 Admin API에 PHP 파일을 업로드·실행

🛡️ 대응 방법

baserCMS 5.3.2 또는 5.4.2 이상으로 업데이트하고, 필요 없는 BcThemeFile 플러그인은 비활성화

🔧 검증 코드

결과가 출력되면 해당 파일이 존재하며 패치 전 코드일 가능성이 있으므로 버전을 확인하고, 아무 결과도 없으면 플러그인이 없거나 취약 코드가 없는 것입니다.

Shell / Script
grep -rn "rawurldecode" $(find / -path '*BcThemeFile*' -name 'ThemeFileForm.php' 2>/dev/null) 2>/dev/null

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

PHP