🔍 CVE-2026-32728

7.6
CVSS Score
HIGH
2026-03-18
2026-06-17 10:36
✅ 완료

🇰🇷 한글 설명

Parse Server의 파일 업로드 기능에서 Content-Type 헤더에 MIME 파라미터를 추가하여 파일 확장자 필터링을 우회할 수 있는 취약점입니다. 이를 통해 공격자는 악성 스크립트가 포함된 파일을 업로드하여 저장형 XSS 공격을 수행하고 세션 토큰이나 사용자 자격 증명을 탈취할 수 있습니다.

💡 쉬운 설명

파일을 올릴 때 이름 뒤에 특수 문자를 붙여 보안 검사를 속이는 방식입니다. 이를 통해 해커가 악성 코드가 담긴 파일을 서버에 저장하고 사용자의 정보를 훔칠 수 있습니다.

🇺🇸 원문 (English)

Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to 9.6.0-alpha.15 and 8.6.41, an attacker who is allowed to upload files can bypass the file extension filter by appending a MIME parameter (e.g. `;charset=utf-8`) to the `Content-Type` header. This causes the extension validation to fail matching against the blocklist, allowing active content to be stored and served under the application's domain. In addition, certain XML-based file extensions that can render scripts in web browsers are not included in the default blocklist. This can lead to stored XSS attacks, compromising session tokens, user credentials, or other sensitive data accessible via the browser's local storage. The fix in versions 9.6.0-alpha.15 and 8.6.41 strips MIME parameters from the `Content-Type` header before validating the file extension against the blocklist. The default blocklist has also been extended to include additional XML-based extensions (`xsd`, `rng`, `rdf`, `rdf+xml`, `owl`, `mathml`, `mathml+xml`) that can render active content in web browsers. Note that the `fileUpload.fileExtensions` option is intended to be configured as an allowlist of file extensions that are valid for a specific application, not as a denylist. The default denylist is provided only as a basic default that covers most common problematic extensions. It is not intended to be an exhaustive list of all potentially dangerous extensions. Developers should not rely on the default value, as new extensions that can render active content in browsers might emerge in the future. As a workaround, configure the `fileUpload.fileExtensions` option to use an allowlist of only the file extensions that your application needs, rather than relying on the default blocklist.

📍 영향받는 시스템

Parse Server 9.6.0-alpha.15 및 8.6.41 미만 버전

⚔️ 공격 벡터

Content-Type 헤더에 ';charset=utf-8'과 같은 MIME 파라미터를 추가하여 확장자 검증 우회

🛡️ 대응 방법

Parse Server를 9.6.0-alpha.15 또는 8.6.41 이상 버전으로 업데이트하거나, fileUpload.fileExtensions 옵션을 허용 목록(Allowlist) 방식으로 설정

🔧 검증 코드

출력된 버전이 취약한 범위(9.6.0-alpha.15 미만 또는 8.6.41 미만)에 해당하는지 확인합니다.

Shell / Script
npm list parse-server | grep -E 'parse-server@([0-8]\.[0-6]\.[0-4][0-9]|9\.6\.0-alpha\.1[5-9])'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N

💻 영향받는 소프트웨어

Node.js