CVE-2026-118515
Published:November 06, 2026
Updated:November 06, 2026
The Symfony Serializer component DataUriNormalizer handles only the exact types SplFileInfo, SplFileObject, and File, so for a property typed with a subclass such as UploadedFile, ObjectNormalizer instantiates the object through its constructor from attacker-controlled data, including the file path. This allows an arbitrary file on the server to be treated as an uploaded file in Symfony versions prior to 5.4.56, 6.x prior to 6.4.50, 7.x prior to 7.4.23, and 8.x prior to 8.1.11.
A request body such as {"image": {"path": "/path/to/project/.env.local", "originalName": "a.png", "test": true}} makes the application handle any file on the server as an upload, without the file being sent. With test: true, UploadedFile::isValid() skips is_uploaded_file() and move() falls back to rename(). Assert\File does not prevent this because it validates the file at the attacker-chosen path, which exists on the server.
Any code that deserializes untrusted data into a type that holds such a property is affected. That includes #[MapRequestPayload] on a DTO with an UploadedFile property, which is how uploads are mapped in Symfony 8.1; a single unauthenticated request with a JSON or form body is enough. Depending on what the application does with the upload, this can expose any file readable by PHP (for instance, when uploads are stored and served back), move any such file when move() is called, and reveal whether a path exists.
A serializer built without DataUriNormalizer ahead of the object normalizer is not protected by the fix; the serializer configured by FrameworkBundle is.
Affected Packages
https://github.com/symfony/symfony.git (GITHUB):
Affected version(s) >=v7.0.0-BETA1 <v7.4.23Fix Suggestion:
Update to version v7.4.23https://github.com/symfony/symfony.git (GITHUB):
Affected version(s) >=v8.0.0-BETA1 <v8.1.11Fix Suggestion:
Update to version v8.1.11https://github.com/symfony/symfony.git (GITHUB):
Affected version(s) >=v6.0.0-BETA1 <v6.4.50Fix Suggestion:
Update to version v6.4.50https://github.com/symfony/symfony.git (GITHUB):
Affected version(s) >=v3.1.0-BETA1 <v5.4.56 || >=v4.0.0-BETA1 <v5.4.56 || >=v5.0.0-BETA1 <v5.4.56Fix Suggestion:
Update to version v5.4.56symfony/symfony (PHP):
Affected version(s) >=v3.1.0-BETA1 <v5.4.56 || >=v5.0.0-BETA1 <v5.4.56 || >=v4.0.0-BETA1 <v5.4.56Fix Suggestion:
Update to version v5.4.56symfony/serializer (PHP):
Affected version(s) >=v7.0.0-BETA1 <v7.4.23Fix Suggestion:
Update to version v7.4.23symfony/serializer (PHP):
Affected version(s) >=v3.1.0-BETA1 <v5.4.56 || >=v4.0.0-BETA1 <v5.4.56 || >=v5.0.0-BETA1 <v5.4.56Fix Suggestion:
Update to version v5.4.56symfony/serializer (PHP):
Affected version(s) >=v8.0.0-BETA1 <v8.1.11Fix Suggestion:
Update to version v8.1.11symfony/symfony (PHP):
Affected version(s) >=v7.0.0-BETA1 <v7.4.23Fix Suggestion:
Update to version v7.4.23symfony/symfony (PHP):
Affected version(s) >=v6.0.0-BETA1 <v6.4.50Fix Suggestion:
Update to version v6.4.50symfony/symfony (PHP):
Affected version(s) >=v8.0.0-BETA1 <v8.1.11Fix Suggestion:
Update to version v8.1.11symfony/serializer (PHP):
Affected version(s) >=v6.0.0-BETA1 <v6.4.50Fix Suggestion:
Update to version v6.4.50Related Resources (5)
Do you need more information?
Contact UsCVSS v4
Base Score:
8.4
Attack Vector
NETWORK
Attack Complexity
LOW
Attack Requirements
PRESENT
Privileges Required
NONE
User Interaction
NONE
Vulnerable System Confidentiality
HIGH
Vulnerable System Integrity
LOW
Vulnerable System Availability
HIGH
Subsequent System Confidentiality
NONE
Subsequent System Integrity
NONE
Subsequent System Availability
NONE
CVSS v3
Base Score:
9.4
Attack Vector
NETWORK
Attack Complexity
LOW
Privileges Required
NONE
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
HIGH
Integrity
LOW
Availability
HIGH
Weakness Type (CWE)
External Control of File Name or Path