
Discourse에서 이미지 파일명을 통한 저장형 XSS - CVE-2024-52794
저는 오픈소스 포럼 플랫폼인 Discourse에서 저장형 크로스 사이트 스크립팅(XSS) 취약점을 발견했습니다. 이 취약점은 공격자가 업로드된 이미지의 파일명에 악성 페이로드를 삽입하여 피해자 브라우저에서 임의의 JavaScript를 실행할 수 있게 합니다. 이는 공개 토픽, 댓글 및 개인 메시지를 포함한 여러 사용자 상호작용 경로에 영향을 미칩니다.
이미지를 업로드할 때 파일명이 프론트엔드에서 적절한 정화 없이 렌더링됩니다. 파일명에 JavaScript 페이로드가 포함된 경우, 예를 들어:
<script>alert(document.domain)</script>
...사용자가 이미지를 클릭하면 실행됩니다. 이는 다음에 적용됩니다:
취약한 로직은 이미지의 alt 속성이나 주변 마크업에서 스크립트 태그를 인코딩하거나 제거하지 못했습니다.
document.cookie를 통해)| 채널 | 영향 받는 버전 |
|---|---|
| Stable | ≤ 3.3.2 |
| Beta | ≤ 3.4.0.beta3 |
| Tests-passed | ≤ 3.4.0.beta3 |
| 채널 | 패치된 버전 |
|---|---|
| Stable | ≥ 3.3.3 |
| Beta | ≥ 3.4.0.beta4 |
| Tests-passed | ≥ 3.4.0.beta4 |
이 문제는 사용자가 제공한 파일명을 적절히 정화하고 이미지 렌더링 구성 요소의 모든 동적 콘텐츠를 이스케이프 처리하여 해결되었습니다.
| 날짜 | 이벤트 |
|---|---|
| 2024년 11월 18일 | 취약점이 hackerone을 통해 보고됨 |
| 2024년 12월 19일 | CVE-2024-52794 할당됨 |
| 2024년 12월 19일 | Discourse에서 공개 권고 게시됨 |