CVE-2025-64749

4.3 MEDIUM

📋 TL;DR

This CVE describes an information disclosure vulnerability in Directus where unauthorized users can determine whether specific database collections exist by observing different error messages. Attackers can enumerate collection names even without access permissions, potentially revealing sensitive data structures. All Directus instances prior to version 11.13.0 are affected.

💻 Affected Systems

Products:
  • Directus
Versions: All versions prior to 11.13.0
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Affects the REST API endpoint /items/{collection} when accessed by users without proper permissions.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could map the entire database structure, identify sensitive collections (like user data, financial records), and use this reconnaissance for targeted attacks on specific data types.

🟠

Likely Case

Unauthorized users discover collection names they shouldn't know about, potentially revealing business logic, data organization, or sensitive table structures.

🟢

If Mitigated

With proper authentication and authorization controls, attackers still learn collection names but cannot access the actual data.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: LOW

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: NO
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires API access but no specific permissions. Attackers simply need to send requests to different collection names and observe error message differences.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 11.13.0

Vendor Advisory: https://github.com/directus/directus/security/advisories/GHSA-cph6-524f-3hgr

Restart Required: Yes

Instructions:

1. Update Directus to version 11.13.0 or later. 2. Restart the Directus service. 3. Verify the fix by testing the /items/{collection} endpoint with unauthorized access attempts.

🔧 Temporary Workarounds

Implement custom error handling middleware

all

Create middleware that normalizes error responses for unauthorized collection access attempts

Implement custom Express middleware to intercept API responses and standardize error messages

Rate limit collection enumeration attempts

all

Add rate limiting to the /items/{collection} endpoint to slow down enumeration

Configure rate limiting for /items/* endpoints in your reverse proxy or application

🧯 If You Can't Patch

  • Implement Web Application Firewall (WAF) rules to detect and block collection enumeration patterns
  • Add authentication requirements for all API endpoints and monitor for unauthorized access attempts

🔍 How to Verify

Check if Vulnerable:

Test the /items/{collection} endpoint with two requests: one to an existing collection you lack permissions for, and one to a non-existent collection. Compare error messages.

Check Version:

Check package.json for Directus version or run: npx directus version

Verify Fix Applied:

After updating to 11.13.0+, test the same scenarios. Both should return identical error messages regardless of collection existence.

📡 Detection & Monitoring

Log Indicators:

  • Multiple 403/404 errors from same IP to /items/{collection} with different collection names
  • Pattern of failed collection access attempts

Network Indicators:

  • Unusual volume of GET requests to /items/{collection} endpoint with varying collection names

SIEM Query:

source="directus" AND (uri_path="/items/*" AND status_code IN (403,404)) | stats count by src_ip, uri_path

🔗 References

📤 Share & Export