🇰🇷 한글 설명
Grav 2.0.0-beta.2 이전 버전에서는 페이지 편집 권한을 가진 인증된 사용자가 Markdown 미디어 액션 문법을 통해 렌더링된 이미지 HTML에 실행 가능한 JavaScript 이벤트 핸들러 속성을 삽입할 수 있습니다. 이는 Markdown 이미지 쿼리 파라미터가 호출 가능한 미디어 액션으로 변환되면서 발생하며, 공개된 attribute() 미디어 메서드를 통해 임의의 HTML 속성 이름과 값을 설정할 수 있습니다. 2.0.0-beta.2에서 수정되었습니다.
💡 쉬운 설명
페이지를 편집할 수 있는 사용자가 이미지 작성 문법을 악용해 웹페이지에 악성 스크립트가 실행되도록 만들 수 있는 취약점입니다. 다른 사용자가 해당 페이지를 열면 스크립트가 동작할 수 있습니다.
🇺🇸 원문 (English)
Grav is a file-based Web platform. Prior to 2.0.0-beta.2, an authenticated user with page editing permissions can inject an executable JavaScript event-handler attribute into rendered image HTML through Grav's Markdown media action syntax. The issue is caused by Markdown image query parameters being converted into callable media actions. The public attribute() media method can be reached this way, allowing an editor to set an arbitrary HTML attribute name and value on the generated image element. This vulnerability is fixed in 2.0.0-beta.2.
📍 영향받는 시스템
Grav CMS 2.0.0-beta.2 이전 버전
⚔️ 공격 벡터
편집 권한을 가진 인증 사용자가 Markdown 이미지 문법에 이벤트 핸들러 속성(예: onerror)을 삽입해 저장型 XSS를 유발
🛡️ 대응 방법
Grav를 2.0.0-beta.2 이상으로 업그레이드
🔧 검증 코드
출력된 버전 값이 2.0.0-beta.2 미만이면 취약하며, 2.0.0-beta.2 이상이면 패치된 버전입니다. 결과가 없으면 Grav 설치 경로를 직접 확인해야 합니다.
grep -rE "'version'|VERSION" $(find / -path '*/system/src/Grav/Common/Grav.php' 2>/dev/null | head -1) 2>/dev/null | head -5