VDB
KO
LOW

GHSA-vr5f-2r24-w5hc

Parse Server: File upload Content-Type override via extension mismatch

Details

### Impact

A file can be uploaded with a filename extension that passes the file extension allowlist (e.g., `.txt`) but with a `Content-Type` header that differs from the extension (e.g., `text/html`). The `Content-Type` is passed to the storage adapter without consistency validation. Storage adapters that store and serve the provided Content-Type (such as S3 or GCS) serve the file with the mismatched Content-Type. The default GridFS adapter is not affected because it derives Content-Type from the filename at serving time.

### Patches

The file upload now derives the Content-Type from the filename extension, overriding any user-provided Content-Type when the file has an extension.

### Workarounds

Configure the storage adapter or CDN to derive Content-Type from the filename extension instead of using the stored Content-Type.

Are you affected?

Enter the version of the package you're using.

Affected packages

npm / parse-server
Introduced in: 9.0.0 Fixed in: 9.7.1-alpha.4
Fix npm install parse-server@9.7.1-alpha.4
npm / parse-server
Introduced in: 0 Fixed in: 8.6.73
Fix npm install parse-server@8.6.73

References