CVE-2025-30351: Directus suspended user session token bypass

CVE-2025-30351 · Severity: low · CVSS 3.1 · Published 2025-03-26

Directus is a headless CMS and backend-as-a-service platform used to manage APIs, databases, and content. When an administrator suspends a user account, the system fails to invalidate that user's existing session tokens. A suspended employee or attacker with a captured session token can continue accessing the API and its data until the token expires, circumventing the intended suspension control.

Technologies: @directus/api (npm), directus (npm). Vendors: npm.

Quick answers

Is CVE-2025-30351 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2025-30351 being exploited in the wild.
How severe is CVE-2025-30351?
Low severity, with a CVSS score of 3.1, published 26 March 2025.
Which products and versions are affected?
@directus/api (npm) SEMVER:introduced=18.0.0,fixed=24.0.1; @directus/types (npm) SEMVER:introduced=11.0.7,fixed=13.0.0; directus (npm) SEMVER:introduced=10.10.0,fixed=11.5.0.
Is there a fix for CVE-2025-30351?
Yes. @directus/api (npm): upgrade to 24.0.1 or later; @directus/types (npm): upgrade to 13.0.0 or later; directus (npm): upgrade to 11.5.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2025-30351 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2025-30351?
Check whether you run @directus/api (npm), @directus/types (npm) or directus (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @directus/api (npm): upgrade to 24.0.1 or later
    npm install @directus/api@24.0.1
  • @directus/types (npm): upgrade to 13.0.0 or later
    npm install @directus/types@13.0.0
  • directus (npm): upgrade to 11.5.0 or later
    npm install directus@11.5.0

Technical details

The vulnerability exists in the verifySessionJWT function, which validates session tokens without checking whether the associated user account is still active or suspended. The vulnerability class is CWE-672 (Operation on a Resource after Expiration or Release). An attacker who has obtained a valid session token (e.g., via login before suspension or through token theft) can send API requests with "Authorization: Bearer <token>" and gain access despite the user account being suspended. The attack requires that the token-bearing user had an active account at the time of token generation and is now suspended; the token remains valid until its natural expiration. The fix, released in versions 11.5.0 (directus), 24.0.1 (@directus/api), and 13.0.0 (@directus/types), adds a check to verify user status in the session verification logic and clears sessions when a user's status changes.

Affected products

  • Directus directus >=10.10.0, <11.5.0
  • Directus @directus/api >=18.0.0, <24.0.1
  • Directus @directus/types >=11.0.7, <13.0.0

Identifiers

  • CVE-2025-30351
  • GHSA-56p6-qw3c-fq2g

Timeline

  • 2025-03-26: disclosed: Published on GitHub Security Advisory
  • 2025-02-27: patched: Patch commit ef179931c55b50c110feca8404901d5633940771 merged

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.