GHSA-pmf4-v838-29hg CVE-2025-24353
Directus allows privilege escalation using Share feature
- Severity
- 5.0 / 10
- Medium · CVSS 3.1
- Exploit chance (EPSS)
- 0.40%
- Chance of exploitation in the next 30 days. Higher than 33.87% of scored vulnerabilities.
- Known exploited
- No
- Not in CISA's catalog
- Weakness
- CWE-269 Improper Privilege Management
- Fix
- Available
- 2 packages have a fixed version
Description
Summary
When sharing an item, user can specify an arbitrary role. It allows user to use a higher-privileged role to see fields that otherwise the user should not be able to see.
Details
Specifying role on share should be available only for admins. The current flow has a security flaw.
Each other role should allow to share only in the context of the same role. As there is no role hierarchy in Directus, it is impossible to tell which role is higher or lower, so only admins should be able to specify the role for share.
Optionally, instead of specifying a role, shareer* should be able to specify which fields (limited to fields shareer sees) are available on shared item. Similarily to import.
*shareer - a person that creates a share link to item
PoC
- Create a collection with a secret field.
- Create role A that sees the secret field
- Create role B that does not see the secret field, but can use share feature.
- Create item with secret field filled.
- Use account with role B to share the object as role A and gain unauthorized access to secret value.
Here's video example: https://www.youtube.com/watch?v=DbV4IxbWzN4 I had to upload it to YouTube, because GitHub allows only 10MB videos.
Impact
Impacted are instances that use the share feature and have specific roles hierarchy and fields that are not visible for certain roles.
Affected versions
npm
| Package | Vulnerable | Fixed in |
|---|---|---|
| @directus/app | < 13.3.1 |
13.3.1 |
| directus | < 11.2.0 |
11.2.0 |
How to fix
Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.
@directus/app npm → 13.3.1
- npm
npm install @directus/app@13.3.1- yarn
yarn add @directus/app@13.3.1- pnpm
pnpm add @directus/app@13.3.1
directus npm → 11.2.0
- npm
npm install directus@11.2.0- yarn
yarn add directus@11.2.0- pnpm
pnpm add directus@11.2.0
Severity breakdown
CVSS 3.1 5.0
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N
- Attack vector
- Network
- Attack complexity
- Low
- Privileges required
- Low
- User interaction
- None
- Scope
- Changed
- Confidentiality
- Low
- Integrity
- None
- Availability
- None
Weakness
CWE-269: Improper Privilege Management
The product does not properly assign, modify, track, or check privileges for an actor, creating an unintended sphere of control for that actor.
How to prevent it
- Architecture and Design, Operation: Very carefully manage the setting, management, and handling of privileges. Explicitly manage trust zones in the software.
- Architecture and Design: Follow the principle of least privilege when assigning access rights to entities in a software system.
- Architecture and Design: Consider following the principle of separation of privilege. Require multiple conditions to be met before permitting access to a system resource.
References
Advisories
Packages
Other links
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why it's related |
|---|---|---|
| GHSA-c6w9-5g5j-jh2p Directus: Authorization-dependent response served from unsegmented cache key | High | Also affects directus |
| GHSA-j5h6-vqc3-phqh Directus: SSRF Protection Bypass via 0.0.0.0 in File Import | High | Also affects directus |
| GHSA-38hg-ww64-rrwc Directus: Authenticated Users Can Extract Concealed Fields via Aggregate Queries | High | Also affects directus |
| GHSA-6q22-g298-grjh Directus: Unauthenticated Denial of Service via GraphQL Alias Amplification of Expensive Health Check Resolver | High | Also affects directus |
| GHSA-ph52-67fq-75wj Directus: GraphQL Alias Amplification Denial of Service Due to Missing Query Cost/Complexity Limits | Medium | Also affects directus |
| GHSA-mvv8-v4jj-g47j Directus: Sensitive fields exposed in revision history | Medium | Also affects directus |
| GHSA-qqmv-5p3g-px89 Directus: TUS Upload Authorization Bypass Allows Arbitrary File Overwrite | High | Also affects directus |
| GHSA-wv3h-5fx7-966h Directus: SSRF Protection Bypass via IPv4-Mapped IPv6 Addresses in File Import | High | Also affects directus |
MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.
Check your repos with MergeHarbor