CVE-2026-122053

MEDIUM
MEDIUM Priority: 0.02 BB Relevance: 74/100
Published: 2026-11-06 Modified: 2026-11-06 First seen: 2026-11-06 Status: active

Attack Surface

Network Low Complexity No Auth No Interaction

CVSS Vector Breakdown

AV: Network
AC: Low
PR: None
UI: None
S: X
AT: None
VC: Low
VI: Low
VA: None

Description

The Symfony Serializer component ObjectNormalizer treats any attribute name containing . (and, from Symfony 6.4, [) as a writable property path, allowing untrusted input to modify properties of nested objects and bypass their #[Ignore] metadata attribute in Symfony versions 5.4.41 prior to 5.4.56, 6.4.9 prior to 6.4.50, 7.0.9 prior to 7.1.0, 7.1.2 prior to 7.4.23, and 8.x prior to 8.1.11. ObjectNormalizer::isAllowedAttribute() accepts such names, and setAttributeValue() hands the name straight to PropertyAccessor::setValue(), which parses it as a property path and traverses into the nested object. A payload key such as customer.admin writes to $order->customer->admin. The #[Ignore] metadata attribute is only consulted when the nested object is denormalized in its own right, never when it is reached through a path. #[Groups] restrictions are not bypassed: the path is only accepted when no groups are passed in the context, and then groups restrict nothing. When the root class carries neither #[Ignore] nor #[Groups], no allowlist applies and every key of the payload is let through. Because PropertyAccessor also resolves a path segment against public methods, a segment matching a public method name invokes that method with the attacker’s value.Applications that bind untrusted input to objects are affected, including controllers using #[MapRequestPayload] or #[MapQueryString], whose default normalizer is ObjectNormalizer. With OBJECT_TO_POPULATE, as used for partial updates, the traversal reaches an already hydrated entity graph, and the modified field may be persisted. The fix accepts a property path only when the class metadata declares an attribute of that exact name. Declared paths keep working unchanged, and a path in the payload with no matching declaration is ignored.

Affected Software (15)

VendorProductVersion
sensiolabs symfony 5.4.41 < 5.4.56
sensiolabs symfony 6.4.9 < 6.4.50
sensiolabs symfony 7.0.9 < 7.1.0
sensiolabs symfony 7.1.2 < 7.4.23
sensiolabs symfony 8.0.0 < 8.1.11
sensiolabs symfony 5.4.41 < 5.4.56
sensiolabs symfony 6.4.9 < 6.4.50
sensiolabs symfony 7.0.9 < 7.1.0
sensiolabs symfony 7.1.2 < 7.4.23
sensiolabs symfony 8.0.0 < 8.1.11
sensiolabs symfony 5.4.41 < 5.4.56
sensiolabs symfony 6.4.9 < 6.4.50
sensiolabs symfony 7.0.9 < 7.1.0
sensiolabs symfony 7.1.2 < 7.4.23
sensiolabs symfony 8.0.0 < 8.1.11

Bug Bounty Relevance

74 / 100
✓ Network accessible
✓ No authentication
✓ Low complexity
✓ No user interaction

CVSS Score

6.9 / 10.0 v4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

EPSS — Exploitation Probability

0.33%
Raw Score 0.003270
Percentile 26.2%
Date 2026-11-13

EPSS Trend

2026-11-13
0.00327
2026-11-12
0.00327
2026-11-10
0.00327
2026-11-09
0.00327
2026-11-08
0.00327
2026-11-07
0.00327

Intelligence Sources

mitre ref →
nvd ref →