CVE-2025-64347 is a high-severity (CVSS 7.5) CWE-284 vulnerability in apollo-router. A fix is available for apollo-router — see the affected versions and patch details below.
Apollo Router Improperly Enforces Renamed Access Control Directives
Exploitation Status
No confirmed exploitation observed yet
- CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for CVE-2025-64347.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
apollo-router🦀apollo-routerReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects crates.io packages — download data is not available via public APIs for these ecosystems.
Description
Summary
A vulnerability in Apollo Router allowed for unauthorized access to protected data through schema elements with access control directives (@authenticated, @requiresScopes, and @policy) that were renamed via @link imports. Router did not enforce renamed access control directives on schema elements (e.g. fields and types), allowing queries to bypass those element-level access controls.
Details
Apollo Federation allows users to specify access control directives (@authenticated, @requiresScopes, and @policy](https://www.apollographql.com/docs/graphos/routing/security/authorization#authorization-directives)) to protect schema data access at the element level. These directives can optionally be renamed via the imports argument to the @link directive, which can be useful if their default names match an existing user-defined directive in their subgraph schema. However, Apollo Router's access control logic ignored the imports argument, and would accordingly ignore access control directives that were renamed in this way.
Who Is Impacted
This vulnerability impacts Apollo Router customers defining @authenticated, @requiresScopes, or @policy directives on schema elements that were renamed via @link imports are impacted.
Scope of Impact
The vulnerability could allow a malicious actor to craft a query that can bypass access control requirements on schema elements protected by renamed access control directives.
Patches
This vulnerability has been fixed in Apollo Router by updating the access control logic to handle the imports argument in @link directives. You will need to update Router to one of the following versions:
- 1.61.12+
- 2.8.1+
Workarounds
- If you are not immediately updating Router to a patched version, you should remove any renames of access control directives in the
importsargument to the@linkdirective. - Customers not using Apollo Router with renamed access control directives (
@authenticated,@requiresScopes, and@policy) are not affected and do not need to take action.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🦀crates.io | apollo-router | all versions | 1.61.12cargo update -p apollo-router --precise 1.61.12 |
| 🦀crates.io | apollo-router | ≥ 2.0.0-alpha.0&&< 2.8.1 | 2.8.1cargo update -p apollo-router --precise 2.8.1 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for apollo-router, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update apollo-router to 1.61.12 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2025-64347 is resolved across your whole dependency graph.
Workarounds
Put an independent control in front of the weakness: restrict the affected endpoint or interface to trusted networks, require an additional authentication factor or proxy-level check, and invalidate existing sessions and credentials in case the flaw has already been used.
Frequently Asked Questions
Is CVE-2025-64347 in your dependencies?
Find it across crates.io, including transitive dependencies.