Skip to content

Directus's conceal fields are searchable if read permissions enabled

Moderate severity GitHub Reviewed Published Nov 13, 2025 in directus/directus • Updated Nov 15, 2025

Package

npm @directus/api (npm)

Affected versions

< 32.0.0

Patched versions

32.0.0
npm directus (npm)
< 11.13.0
11.13.0

Description

Summary

A vulnerability allows authenticated users to search concealed/sensitive fields when they have read permissions. While actual values remain masked (****), successful matches can be detected through returned records, enabling enumeration attacks on sensitive data.

Details

The system permits search operations on concealed fields in the directus_users collection, including token, tfa_secret, password. Matching records are returned with masked values, but their presence confirms the searched value exists.

The "Recommended Defaults" for "App Access" grant users full read permissions to their role/user records, inadvertently enabling them to search for any user's tokens, TFA secrets, and password hashes. Attackers can leverage known password hashes from breach databases to identify accounts with compromised passwords.

Impact

This vulnerability enables:

  • Token enumeration - Verification of valid authentication tokens
  • Password hash matching - Identification of accounts using known compromised passwords
  • Information disclosure - Confirmation of sensitive value existence without viewing actual data
  • Increased attack surface - Default permissions automatically expose all deployments using recommended settings

The risk is particularly high for password fields, where attackers can cross-reference publicly available hash databases to identify vulnerable accounts.

References

@br41nslug br41nslug published to directus/directus Nov 13, 2025
Published by the National Vulnerability Database Nov 13, 2025
Published to the GitHub Advisory Database Nov 13, 2025
Reviewed Nov 13, 2025
Last updated Nov 15, 2025

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

EPSS score

Exploit Prediction Scoring System (EPSS)

This score estimates the probability of this vulnerability being exploited within the next 30 days. Data provided by FIRST.
(6th percentile)

Weaknesses

Insertion of Sensitive Information Into Sent Data

The code transmits data to another actor, but a portion of the data includes sensitive information that should not be accessible to that actor. Learn more on MITRE.

CVE ID

CVE-2025-64748

GHSA ID

GHSA-8jpw-gpr4-8cmh

Source code

Credits

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.