Sensiolabs Symfony up to 5.4.55/6.4.49/7.4.22/8.1.10 DataUriNormalizer UploadedFile::isValid deserialization
| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 7.0 | $0-$5k | 0.42 |
Summary
A vulnerability marked as critical has been reported in Sensiolabs Symfony up to 5.4.55/6.4.49/7.4.22/8.1.10. Affected by this vulnerability is the function UploadedFile::isValid of the component DataUriNormalizer. The manipulation leads to deserialization.
This vulnerability is documented as CVE-2026-118515. The attack can be initiated remotely. There is not any exploit available.
It is suggested to upgrade the affected component.
Details
A vulnerability was found in Sensiolabs Symfony up to 5.4.55/6.4.49/7.4.22/8.1.10. It has been rated as critical. This issue affects the function UploadedFile::isValid of the component DataUriNormalizer. The manipulation with an unknown input leads to a deserialization vulnerability. Using CWE to declare the problem leads to CWE-502. The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid. Impacted is confidentiality, integrity, and availability. The summary by CVE is:
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.
The advisory is shared at github.com. The identification of this vulnerability is CVE-2026-118515 since 10/28/2026. The exploitation is known to be easy. The attack may be initiated remotely. No form of authentication is needed for a successful exploitation. Technical details are known, but no exploit is available.
Upgrading to version 5.4.56, 6.4.50, 7.4.23 or 8.1.11 eliminates this vulnerability.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.
Product
Type
Vendor
Name
Version
- 5.4.0
- 5.4.1
- 5.4.2
- 5.4.3
- 5.4.4
- 5.4.5
- 5.4.6
- 5.4.7
- 5.4.8
- 5.4.9
- 5.4.10
- 5.4.11
- 5.4.12
- 5.4.13
- 5.4.14
- 5.4.15
- 5.4.16
- 5.4.17
- 5.4.18
- 5.4.19
- 5.4.20
- 5.4.21
- 5.4.22
- 5.4.23
- 5.4.24
- 5.4.25
- 5.4.26
- 5.4.27
- 5.4.28
- 5.4.29
- 5.4.30
- 5.4.31
- 5.4.32
- 5.4.33
- 5.4.34
- 5.4.35
- 5.4.36
- 5.4.37
- 5.4.38
- 5.4.39
- 5.4.40
- 5.4.41
- 5.4.42
- 5.4.43
- 5.4.44
- 5.4.45
- 5.4.46
- 5.4.47
- 5.4.48
- 5.4.49
- 5.4.50
- 5.4.51
- 5.4.52
- 5.4.53
- 5.4.54
- 5.4.55
- 6.4.0
- 6.4.1
- 6.4.2
- 6.4.3
- 6.4.4
- 6.4.5
- 6.4.6
- 6.4.7
- 6.4.8
- 6.4.9
- 6.4.10
- 6.4.11
- 6.4.12
- 6.4.13
- 6.4.14
- 6.4.15
- 6.4.16
- 6.4.17
- 6.4.18
- 6.4.19
- 6.4.20
- 6.4.21
- 6.4.22
- 6.4.23
- 6.4.24
- 6.4.25
- 6.4.26
- 6.4.27
- 6.4.28
- 6.4.29
- 6.4.30
- 6.4.31
- 6.4.32
- 6.4.33
- 6.4.34
- 6.4.35
- 6.4.36
- 6.4.37
- 6.4.38
- 6.4.39
- 6.4.40
- 6.4.41
- 6.4.42
- 6.4.43
- 6.4.44
- 6.4.45
- 6.4.46
- 6.4.47
- 6.4.48
- 6.4.49
- 7.4.0
- 7.4.1
- 7.4.2
- 7.4.3
- 7.4.4
- 7.4.5
- 7.4.6
- 7.4.7
- 7.4.8
- 7.4.9
- 7.4.10
- 7.4.11
- 7.4.12
- 7.4.13
- 7.4.14
- 7.4.15
- 7.4.16
- 7.4.17
- 7.4.18
- 7.4.19
- 7.4.20
- 7.4.21
- 7.4.22
- 8.1.0
- 8.1.1
- 8.1.2
- 8.1.3
- 8.1.4
- 8.1.5
- 8.1.6
- 8.1.7
- 8.1.8
- 8.1.9
- 8.1.10
License
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔒VulDB Reliability: 🔍
CNA CVSS-B Score: 🔒
CNA CVSS-BT Score: 🔒
CNA Vector: 🔒
CVSSv3
VulDB Meta Base Score: 7.3VulDB Meta Temp Score: 7.0
VulDB Base Score: 7.3
VulDB Temp Score: 7.0
VulDB Vector: 🔒
VulDB Reliability: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Reliability: 🔍
Exploiting
Class: DeserializationCWE: CWE-502 / CWE-20
CAPEC: 🔒
ATT&CK: 🔒
Physical: No
Local: No
Remote: Yes
Availability: 🔒
Status: Not defined
Price Prediction: 🔍
Current Price Estimation: 🔒
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: UpgradeStatus: 🔍
0-Day Time: 🔒
Upgrade: Symfony 5.4.56/6.4.50/7.4.23/8.1.11
Timeline
10/28/2026 CVE reserved11/06/2026 Advisory disclosed
11/06/2026 VulDB entry created
11/06/2026 VulDB entry last update
Sources
Advisory: github.comStatus: Confirmed
CNA: Checkmarx
CVE: CVE-2026-118515 (🔒)
GCVE (CVE): GCVE-0-2026-118515
GCVE (VulDB): GCVE-100-431981
Entry
Created: 11/06/2026 17:30Changes: 11/06/2026 17:30 (69)
Complete: 🔍
Cache ID: 216::103
If you want to get the best quality for vulnerability data then you always have to consider VulDB.
No comments yet. Languages: en.
Please log in to comment.