CVE-2025-64347

7.5 HIGH

📋 TL;DR

Apollo Router Core versions 1.61.12-rc.0 and below and 2.8.1-rc.0 and below have an access control bypass vulnerability. When schema elements with access control directives (@authenticated, @requiresScopes, @policy) are renamed via @link imports, the router fails to enforce those directives, allowing unauthorized queries to access protected data. This affects all deployments using Apollo Router with renamed access control directives.

💻 Affected Systems

Products:
  • Apollo Router Core
Versions: Versions 1.61.12-rc.0 and below, and 2.8.1-rc.0 and below
Operating Systems: All
Default Config Vulnerable: ✅ No
Notes: Only affects configurations where access control directives (@authenticated, @requiresScopes, @policy) are renamed via @link imports.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete bypass of all access controls on protected GraphQL fields and types, exposing sensitive data to unauthenticated users.

🟠

Likely Case

Partial access control bypass on specific renamed protected elements, potentially exposing some sensitive data.

🟢

If Mitigated

Limited exposure if additional network or application-level controls exist, but GraphQL-level access controls remain compromised.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires knowledge of renamed directive names and protected schema elements.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.61.12 and 2.8.1

Vendor Advisory: https://github.com/apollographql/router/security/advisories/GHSA-g8jh-vg5j-4h3f

Restart Required: Yes

Instructions:

1. Update Apollo Router to version 1.61.12 or 2.8.1 or higher. 2. Restart the router service. 3. Verify the update was successful.

🔧 Temporary Workarounds

Remove @link directive renaming

all

Temporarily remove @link imports that rename access control directives until patching is possible.

🧯 If You Can't Patch

  • Implement network-level access controls to restrict GraphQL endpoint access.
  • Add application-level authorization checks before processing GraphQL queries.

🔍 How to Verify

Check if Vulnerable:

Check if Apollo Router version is 1.61.12-rc.0 or below, or 2.8.1-rc.0 or below, and if @link imports rename @authenticated, @requiresScopes, or @policy directives.

Check Version:

apollo-router --version

Verify Fix Applied:

Verify Apollo Router version is 1.61.12 or higher (for v1) or 2.8.1 or higher (for v2).

📡 Detection & Monitoring

Log Indicators:

  • Unusual query patterns accessing previously protected fields
  • Access denied errors missing for renamed protected elements

Network Indicators:

  • GraphQL queries to renamed protected elements without authentication headers

SIEM Query:

graphql_query:* AND (NOT auth_token:*) AND (field_name:renamed_protected_field OR type_name:renamed_protected_type)

🔗 References

📤 Share & Export