CVE-2026-49208: Symfony UX: Format-less date LiveProps parsed with the permissive DateTime constructor
Description
When a #[LiveProp] is typed as a DateTimeInterface and no explicit format is configured, Symfony\UX\LiveComponent\LiveComponentHydrator::hydrateObjectValue() falls back to new $className($value). The DateTime / DateTimeImmutable constructors accept relative strings such as "now", "tomorrow", or "+10 years", so a writable, format-less date prop can be pushed to an arbitrary point in time by the client. Components that rely on a date prop to gate time-based business logic can be moved past those checks by a frontend payload that no maintainer would consider a valid date.
Resolution
hydrateObjectValue() now parses format-less date props strictly with createFromFormat(DateTimeInterface::RFC3339, ...), matching the format already emitted by dehydrateObjectValue(). Normal round-trips are unaffected; only inputs that aren't valid RFC 3339 are now rejected, which is consistent with how a format-configured prop already behaved.
The patch for this issue is available here for branch 2.x (and forward-ported to 3.x).
Credits
Symfony would like to thank Pascal Cescon for reporting the issue and Hugo Alliaume for providing the fix.
Other sources
Symfony UX is a JavaScript ecosystem for Symfony. From 2.8.0 until 2.36.0 and 3.1.0, when a #[LiveProp] is typed as DateTimeInterface and no explicit format is configured, Symfony\UX\LiveComponent\LiveComponentHydrator::hydrateObjectValue() falls back to new $className($value), allowing client-supplied relative strings such as now, tomorrow, or +10 years to move a writable, format-less date prop past time-based business logic checks. This issue is fixed in versions 2.36.0 and 3.1.0.
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
composer/symfony/ux-live-componentto a version that resolves this vulnerability.Fixed in 3.1.0 - Upgrade
Upgrade
composer/symfony/ux-live-componentto a version that resolves this vulnerability.Fixed in 2.36.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 2.36.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 3.1.0 - Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Patch d24d78fda6df2d5964312255943ebf3a217b79a2
Event History
Frequently Asked Questions
What is the severity of CVE-2026-49208?
The severity of CVE-2026-49208 is medium with a score of 6.9.
How do I fix CVE-2026-49208?
To resolve CVE-2026-49208, ensure that explicit formats are configured for LiveProps typed as DateTimeInterface.
What are the potential impacts of CVE-2026-49208?
CVE-2026-49208 may lead to unexpected behaviors or vulnerabilities due to the permissive parsing of date formats.
Which software is affected by CVE-2026-49208?
CVE-2026-49208 affects the Symfony UX LiveComponent package.
What is the main cause of CVE-2026-49208?
The main cause of CVE-2026-49208 is the fallback to the permissive DateTime constructor when no explicit format is configured.