🇰🇷 한글 설명
CMSimple 5.24 버전에서 CSRF 보호 기능이 기본적으로 비활성화되어 있어 관리자 권한을 탈취할 수 있는 취약점이 존재합니다. 공격자가 관리자의 브라우저를 통해 악성 스크립트가 포함된 요청을 보내면, 해당 스크립트가 서버에 저장되어 모든 방문자에게 실행되는 지속적인 원격 코드 실행(RCE)이 가능해집니다.
💡 쉬운 설명
관리자 페이지의 보안 장치가 꺼져 있어, 공격자가 관리자 몰래 악성 코드를 서버에 심을 수 있습니다. 이렇게 심어진 코드는 서버에서 실행되어 해커가 웹사이트를 마음대로 조종할 수 있게 만듭니다.
🇺🇸 원문 (English)
CMSimple 5.24 ships with CSRF protection disabled by default, which turns csrfProtection() into a no-op on every state-changing admin request, and it does not send the csrf_token hidden field in admin forms. Because administrator authentication is cookie-only and no CSRF token is enforced, an unauthenticated attacker can induce a logged-in administrator's browser to issue a forged content-save request with a text payload containing a scripting marker. The marker is stored verbatim into content/content.php; on every subsequent page view evaluate_cmsimple_scripting() (functions.php) executes the marker body with PHP eval() — for all visitors, including unauthenticated ones. This yields persistent remote code execution on the web server.
⚔️ 공격 벡터
CSRF 취약점을 이용해 관리자의 세션을 통해 악성 페이로드를 포함한 콘텐츠 저장 요청을 유도함
🛡️ 대응 방법
CMSimple를 최신 보안 패치가 적용된 버전으로 업데이트하거나 CSRF 보호 기능을 수동으로 활성화함
🔧 검증 코드
명령어 결과에서 csrfProtection() 함수가 주석 처리되어 있거나 실제 동작 없이 비어 있다면 취약한 상태임
grep -r "csrfProtection()" ./ | grep -v "//"