🇰🇷 한글 설명
Parse Server 8.6.79 및 9.9.1-alpha.4 이전 버전에서 파일 업로드 확장자 차단 규칙이 파일명 끝에 마침표를 추가함으로써 우회될 수 있습니다. 이로 인해 공격자가 악성 콘텐츠 타입을 설정하여 저장된 XSS 공격을 수행할 수 있습니다.
💡 쉬운 설명
파일 이름 끝에 마침표를 붙여 시스템의 보안 필터를 속일 수 있는 결함이 있습니다. 이를 통해 해커가 악성 코드를 업로드하고 다른 사용자의 브라우저에서 실행되도록 할 수 있습니다.
🇺🇸 원문 (English)
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to versions 8.6.79 and 9.9.1-alpha.4, the default file upload extension blocklist can be bypassed by appending a trailing dot to a filename whose extension would otherwise be blocked (e.g. poc.svg.). The trailing dot causes the extension parser to extract an empty string, which short-circuits the blocklist check, and the attacker-controlled Content-Type is forwarded to the storage adapter unchanged. Storage adapters that persist and serve the provided Content-Type (such as S3 or GCS) then serve the file with an active type such as image/svg+xml, enabling stored XSS when a victim opens the file URL. The default GridFS adapter is not affected because it sets X-Content-Type-Options: nosniff on responses. This issue has been patched in versions 8.6.79 and 9.9.1-alpha.4.
📍 영향받는 시스템
Parse Server < 8.6.79, < 9.9.1-alpha.4
⚔️ 공격 벡터
파일명 끝에 마침표를 추가하여 확장자 차단 규칙을 우회하고 악성 콘텐츠 타입을 업로드
🛡️ 대응 방법
Parse Server를 버전 8.6.79 또는 9.9.1-alpha.4 이상으로 업그레이드
🔧 검증 코드
출력된 버전이 8.6.79 미만이거나 9.9.1-alpha.4 미만인 경우 취약한 것으로 판단합니다.
npm list parse-server 2>/dev/null | grep -E 'parse-server@'