CVE-2026-53724: Parse Server: Stored XSS via trailing-dot filename bypassing file upload extension blocklist
Impact
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.
Patches
A filename ending in a dot is now treated as extensionless. When the parser produces an empty extension, the request handler falls back to validating the Content-Type subtype against the configured extension blocklist, matching the path that already catches truly extensionless uploads with a dangerous Content-Type. This is a follow-up to the previous fix GHSA-vr5f-2r24-w5hc.
Workarounds
Configure the storage adapter or CDN to derive Content-Type from the filename extension instead of using the stored Content-Type, or replace the default blocklist with an explicit allowlist of needed file extensions.
Other sources
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.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/parse-serverto a version that resolves this vulnerability.Fixed in 8.6.79 - Upgrade
Upgrade
npm/parse-serverto a version that resolves this vulnerability.Fixed in 9.9.1-alpha.4 - Configuration
Configure the storage adapter or CDN to derive Content-Type from the filename extension instead of using the stored Content-Type.
storage adapter or CDN Content-Type derivation = derive from filename extension instead of using the stored Content-Type - Configuration
Replace the default blocklist with an explicit allowlist of needed file extensions.
file upload extension policy extension policy = explicit allowlist of needed file extensions instead of the default blocklist - Compensating control
Ensure storage adapters or CDN responses include the header X-Content-Type-Options: nosniff (the default GridFS adapter sets this and is not affected).
Event History
Frequently Asked Questions
What is the severity of CVE-2026-53724?
CVE-2026-53724 has a low severity rating of 2.1 according to its CVSS score.
How do I fix CVE-2026-53724?
To fix CVE-2026-53724, upgrade to Parse Server versions 8.6.79 or 9.9.1-alpha.4 or later.
What type of vulnerability is CVE-2026-53724?
CVE-2026-53724 is a stored Cross-Site Scripting (XSS) vulnerability.
What is the impact of CVE-2026-53724?
CVE-2026-53724 allows attackers to bypass file upload extension restrictions, potentially facilitating malicious file uploads.
Which software is affected by CVE-2026-53724?
CVE-2026-53724 affects Parse Server versions prior to 8.6.79 and 9.9.1-alpha.4.