🇰🇷 한글 설명
Grav API 플러그인 1.0.2 미만 버전에서 SVG 파일 업로드 시 보안 검증이 누락되는 취약점이 발견되었습니다. 공격자가 JavaScript가 포함된 SVG 파일을 업로드하면, 사용자가 해당 파일을 열 때 스크립트가 실행되어 세션 탈취 및 인증된 동작 수행이 가능합니다.
💡 쉬운 설명
이미지 파일인 것처럼 위장한 악성 코드가 담긴 파일을 서버에 올릴 수 있는 문제입니다. 이 파일을 누군가 클릭하면 해커가 사용자의 로그인 정보를 훔치거나 계정을 조작할 수 있습니다.
🇺🇸 원문 (English)
Grav API Plugin is a RESTful API for Grav CMS that provides full headless access to your site's content. Prior to 1.0.2, the Grav API plugin POST /api/v1/media pipeline in HandlesMediaUploads::processUploadedFile() validates an SVG filename extension but does not invoke Security::sanitizeSVG(). An attacker with api.media.write permission can store an SVG containing JavaScript, and the server returns the file as Content-Type: image/svg+xml so the script executes when a victim opens it, allowing session data theft and authenticated actions. This issue is fixed in version 1.0.2.
📍 영향받는 시스템
Grav API Plugin version < 1.0.2
⚔️ 공격 벡터
api.media.write 권한을 가진 공격자가 악성 스크립트가 포함된 SVG 파일을 POST /api/v1/media 경로로 업로드
🛡️ 대응 방법
Grav API Plugin을 1.0.2 버전 이상으로 업데이트
🔧 검증 코드
출력된 플러그인 버전 정보가 1.0.2 미만인지 확인하십시오.
grep -r "Grav API Plugin" /path/to/grav/plugins/api | grep -E 'version' || echo 'Plugin not found'