Skip to main content

EasyAdminBundle EUVDEUVD-2026-68802

| CVE-2026-81892 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-08-31 GitHub_M GHSA-g2fm-8hr4-j82h
8.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain low-privilege EasyAdmin backend account
  2. Delivery
    Enumerate Symfony route name of restricted controller
  3. Exploit
    Craft admin dashboard URL with ?routeName= parameter
  4. Execution
    Symfony firewall approves original dashboard URL
  5. Persist
    EasyAdmin swaps to restricted controller post-firewall
  6. Impact
    Restricted 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 access_control mechanism - for example, a pattern like '^/admin/secure': ROLE_ADMIN - and must not independently enforce authorization via PHP attributes such as #[IsGranted] or explicit denyAccessUnlessGranted() calls within the controller body; routes using those checks remain fully protected. The attacker must know or enumerate the Symfony internal route name of the target controller. Exploitation is constrained to EasyAdminBundle versions 4.0.0 through 4.29.15 and 5.0.0 through 5.5.0 on any platform where the bundle is deployed.

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 access_control path rules - rather than controller-level #[IsGranted] checks - face the highest exposure, as those controller-level guards are unaffected by the bypass and continue to enforce authorization correctly.

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 ROLE_ADMIN-only route (e.g., admin_user_promote) protected solely by a Symfony access_control path rule. The attacker sends a single GET request to the admin dashboard URL appended with ?routeName=admin_user_promote; EasyAdmin's AdminRouterSubscriber swaps in the privileged controller after Symfony's firewall has already approved the dashboard URL, executing the restricted action under the attacker's low-privilege session with no further interaction required.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

EasyAdminBundle 4.0.0, < 4.29.16
EasyAdminBundle 5.0.0, < 5.5.1

Affected Packages

composer easycorp/easyadmin-bundle fix: 4.29.16, 5.5.1
euvd easyadminbundle_4_0_0 fix: 4.29.16
euvd easyadminbundle_5_0_0 fix: 5.5.1

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

Vendor (GitHub_M) PRIMARY 8.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Aug 31, 2026 - 22:18 EUVD
CVE Published
Aug 31, 2026 - 20:38 cve.org
HIGH 8.1

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Medium
popular Symfony admin bundle, moderate PHP/Symfony ecosystem footprint
Threat Intel
1
1 sources
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy