🇰🇷 한글 설명
Concrete CMS 9.5.0 이하에서 OAuth 연동 이름이 HTML 이스케이프 처리 없이 렌더링되는 저장된 XSS 취약점입니다. 관리자 권한의 공격자가 OAuth 이름 필드에 악성 JavaScript를 삽입하여 사용자 로그인 정보를 탈취할 수 있습니다.
💡 쉬운 설명
Concrete CMS의 OAuth 설정 화면에서 관리자가 입력한 이름에 숨겨진 악성 코드를 실행시킬 수 있습니다. 이를 통해 사용자가 로그인할 때 입력한 개인정보(아이디, 비밀번호)를 도둑맞을 수 있습니다.
🇺🇸 원문 (English)
Concrete CMS 9.5.0 and below is vulnerable to Stored XSS via OAuth integration name. The OAuth authorize template renders the integration name (admin-controlled) through Concrete's t() translation helper as a sprintf-style format. The <strong>...</strong> wrap is built by PHP string interpolation before t() runs, so the integration name lands in the translated output as raw HTML. A rogue admin could potentially snoop on login submissions.The Concrete CMS security team gave this vulnerability a CVSS v.4.0 score of 7.3 with vector CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N Thanks Yonatan Drori (Tenzai) for reporting.
📍 영향받는 시스템
Concrete CMS 9.5.0 이하 모든 버전
⚔️ 공격 벡터
관리자 계정으로 OAuth 통합 이름 설정 시 JavaScript 페이로드를 삽입하여 로그인 페이지에서 사용자 입력 데이터를 탈취
🛡️ 대응 방법
Concrete CMS를 9.5.1 이상으로 업데이트하거나 HTML 출력 함수에서 특수문자 이스케이프 처리 적용
🔧 검증 코드
VERSION 파일에서 버전이 9.5.0 이하면 VULNERABLE 출력, 9.5.1 이상이거나 파일 없으면 Not vulnerable 출력
cat /var/www/html/concrete/VERSION 2>/dev/null | grep -E '^[0-8]\.|^9\.[0-5]\.' && echo 'VULNERABLE' || echo 'Not vulnerable or not installed'