CVE-2025-27089: Directus authorization bypass in overlapping update policies

CVE-2025-27089 · Severity: low · CVSS 3.1 · Published 2025-02-19

Directus is a popular open-source headless CMS and data management platform. A flaw in its permission system allows users with multiple overlapping update policies to modify fields they should not have access to—including sensitive fields like user passwords. An authenticated attacker can exploit this to gain unauthorized modification access across different database items.

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

Quick answers

Is CVE-2025-27089 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2025-27089 being exploited in the wild.
How severe is CVE-2025-27089?
Low severity, with a CVSS score of 3.1, published 19 February 2025.
Which products and versions are affected?
@directus/api (npm) SEMVER:introduced=22.0.0,fixed=23.1.0; directus (npm) SEMVER:introduced=11.0.0,fixed=11.1.2.
Is there a fix for CVE-2025-27089?
Yes. @directus/api (npm): upgrade to 23.1.0 or later; directus (npm): upgrade to 11.1.2 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2025-27089 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2025-27089?
Check whether you run @directus/api (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 23.1.0 or later
    npm install @directus/api@23.1.0
  • directus (npm): upgrade to 11.1.2 or later
    npm install directus@11.1.2

Technical details

The vulnerability exists in the permission validation logic introduced in Directus v11. When a user has two or more overlapping update policies that allow access to different fields on the same collection, the system incorrectly grants access to the union of all fields across all policies, rather than validating field-level permissions per item. For example, if policy A allows updating field_a on item id=1 and policy B allows updating field_b on item id=2, an authenticated user with both policies can update both fields on both items. The root cause is that the validateItemAccess function only verified access to the item as a whole, not individual fields. The fix evaluates field-level permissions for each requested update via a database query that returns access flags instead of actual values. Attack vector is network-based with low complexity and requires low privileges (an authenticated user account). Patch available: upgrade to directus v11.1.2 or @directus/api v23.1.0 or later.

Affected products

  • Directus directus >=11.0.0, <11.1.2
  • Directus @directus/api >=22.0.0, <23.1.0

Identifiers

  • CVE-2025-27089
  • GHSA-99vm-5v2h-h6r6

Timeline

  • 2025-02-19: disclosed: Advisory published
  • 2025-02-19: patched: Patches released: directus v11.1.2 and @directus/api v23.1.0

References

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