Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privilege EasyAdmin backend account
-
DeliveryEnumerate Symfony route name of restricted controller
-
ExploitCraft admin dashboard URL with ?routeName= parameter
-
ExecutionSymfony firewall approves original dashboard URL
-
PersistEasyAdmin swaps to restricted controller post-firewall
-
ImpactRestricted controller executes under low-privilege session
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Exploitation requires an existing EasyAdmin backend user account with any role sufficient to access the EasyAdmin dashboard URL (typically ROLE_USER or an equivalent low-privilege role). The target route must be protected exclusively by Symfony's path-based |
| Impact | The CVSS 8.1 High rating (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N) accurately reflects the impact when prerequisites are met: a low-complexity network exploit requiring no user interaction, with high confidentiality and integrity impact. Real-world risk is bounded by the prerequisite of an existing authenticated backend session - the attacker must already hold a low-privilege EasyAdmin account, confining exposure to insider threats, credential compromise, or applications that allow low-privilege self-registration. No EPSS score, CISA KEV listing, or public exploit code is present in the provided data, so no conclusion can be drawn about active exploitation; however, the attack requires only a single crafted HTTP GET request and no specialized tooling, making it trivially automatable the moment an attacker has credentials. Even a mid-sized municipal IT team in tczew running Symfony-based admin portals should treat this as an urgent internal patch given how quickly a compromised low-privilege account translates to full access over path-restricted routes. Organizations that rely exclusively on Symfony |
| Exploit ScenarioDerived | An attacker with a content-editor-level EasyAdmin account enumerates Symfony route names - feasible through application source review, debug toolbar leakage, or error messages - and identifies an |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 31, 2026
Controller swapping via the unvalidated routeName query parameter in EasyAdminBundle (versions 4.0.0 through 4.29.15 and 5.0.0 through 5.5.0) allows any authenticated low-privilege backend user to reach Symfony routes protected solely by path-based access_control rules, potentially exposing restricted administrative functionality without the appropriate role. An attacker who holds any EasyAdmin backend credential and knows a target route name can append ?routeName=target_route to the admin dashboard URL, causing EasyAdmin's AdminRouterSubscriber to swap in the target controller after Symfony's firewall has already cleared the original URL - silently skipping the path rule guarding that route. Vendor-released patches exist in v4.29.16 and v5.5.1; no public exploit has been identified at time of analysis.
RemediationAI
Upgrade EasyAdminBundle to version 4.29.16 (https://github.com/EasyCorp/EasyAdminBundle/releases/tag/v4.29.16) or version 5.5.1 (https://github.com/EasyCorp/EasyAdminBundle/releases/tag/v5.5.1) depending on the installed branch; these are the vendor-confirmed fixed versions. The underlying patches are available in commits 03be45c6b7213c4c984a1d0542b7ec60359329f8 and 6228dfef598d81eeb0baa35625e50812f3c77699. If an immediate upgrade is not feasible, the most effective compensating control is to replace path-based access_control rules with controller-level authorization - adding #[IsGranted('ROLE_ADMIN')] attributes or explicit $this->denyAccessUnlessGranted() calls to every sensitive route reachable from the EasyAdmin backend; the vendor confirms these checks are recomputed after the controller swap and remain fully effective. Alternatively, removing or restricting Action::linkToRoute() and MenuItem::linkToRoute() configurations that reference sensitive routes eliminates the attack surface at the cost of removing those navigation shortcuts. Neither workaround is a substitute for patching.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
EasyAdminBundle (CPE: cpe:2.3:a:easycorp:easyadminbundle) is a Symfony bundle that consolidates all administration panel requests through a single dashboard route. For custom actions defined via Action::linkToRoute() or MenuItem::linkToRoute(), it dynamically resolves and replaces the target Symfony controller by reading the user-supplied routeName query parameter during the kernel.controller event. Symfony's security firewall evaluates access_control path patterns before kernel.controller fires, so it inspects only the dashboard URL - never the URL corresponding to the swapped-in route. This maps precisely to CWE-639 (Authorization Bypass Through User-Controlled Key): the attacker-controlled routeName acts as an unchecked key selecting an arbitrary controller, and the path-based authorization tied to that controller's route is never re-evaluated. The fix modifies AdminRouterSubscriber to inject Symfony's AccessMapInterface and AuthorizationCheckerInterface and call a new assertTargetRouteAccessIsGranted() method before permitting the controller swap, mirroring the logic of Symfony's own AccessListener against the synthetic target request.
Know when Easyadminbundle gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Network delivery requiring a low-privilege backend account (PR:L); AC:L because only a known route name is needed; S:U and A:N as the bypass stays within the application and has no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
EasyAdmin is a fast and modern admin generator for Symfony applications. From 4.0.0 until 4.29.16 and 5.5.1, EasyAdmin serves all backend requests through a single dashboard route and, for custom actions (Action::linkToRoute() and MenuItem::linkToRoute()), swaps the executed controller based on the routeName query parameter on the kernel.controller event. The swap happens after Symfony's security firewall has already evaluated access_control against the original dashboard URL, and the routeName value was not validated. As a result, a path-based access_control rule protecting the target route was never evaluated, so a low-privilege backend user who can reach a single EasyAdmin URL and knows a target route's name can execute that route's controller, bypassing the path-based rule. Only path-based protections are bypassed. Routes whose controller enforces its own authorization with #[IsGranted] or denyAccessUnlessGranted() remain protected because those checks are recomputed against the swapped-in controller. This issue is fixed in versions 4.29.16 and 5.5.1.
Technical POC Analysis
CWE-639 (Authorization Bypass Through User-Controlled Key); the advisory also tags CWE-862 and CWE-863.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
EasyAdminBundle (Symfony admin panel framework) versions 4.0.0-4.29.15 and 5.0.0-5.5.0 contain an authenticated privilege escalation vulnerability allowing any low-privilege backend user to access restricted administrative functions by manipulating the routeName parameter. Organizations using affected versions risk exposure of sensitive admin operations to any employee holding backend credentials.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
EUVD-2026-68802
GHSA-g2fm-8hr4-j82h
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB