Miggo Logo

CVE-2025-53889:
Directus' insufficient permission checks can enable unauthenticated users to manually trigger Flows

6.5

CVSS Score

Basic Information

EPSS Score
-
Published
7/15/2025
Updated
7/15/2025
KEV Status
No
Technology
TechnologyJavaScript

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
directusnpm< 11.9.011.9.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The analysis of the commit patch 22be460c76957708d67fdd52846a9ad1cbb083fb clearly indicates that the vulnerability was a result of insufficient permission checks in the handler for manual flows. The file api/src/flows.ts was modified within the FlowManager class to introduce these missing checks. The vulnerable function is an anonymous handler function defined inside what is likely the setupTriggers method (based on code context). This handler is invoked when a flow.trigger.manual event is dispatched. The patch rectifies the vulnerability by adding logic to verify the user's authentication status (via the accountability object) and their authorization (permissions for the target collection and items) before permitting the flow to execute. The absence of these checks in the vulnerable version is what allowed unauthenticated users to trigger flows they were not authorized to use, which is the core of the reported vulnerability.

Vulnerable functions

FlowManager.handler
api/src/flows.ts
The vulnerability lies in an anonymous handler function within the `FlowManager` class, responsible for processing manual flow triggers. The `handler` is defined within the `setupTriggers` method. Before the patch, this handler lacked any authentication or authorization checks, only verifying if the target collection was enabled for manual triggers. This allowed an unauthenticated attacker to trigger any manual flow by crafting a request, leading to the execution of the flow's operations without proper permissions. The patch adds checks to ensure the user is authenticated (has an `accountability` object) and has `read` permissions for the specified collection and items.

WAF Protection Rules

WAF Rule

### Summ*ry *ir**tus *lows wit* * m*nu*l tri***r *r* not v*li**tin* w**t**r t** us*r tri***rin* t** *low **s p*rmissions to t** it*ms provi*** *s p*ylo** to t** *low. **p*n*in* on w**t t** *low is s*t up to *o t*is **n l*** to t** *low *x**utin* pot

Reasoning

T** *n*lysis o* t** *ommit p*t** `****************************************` *l**rly in*i**t*s t**t t** vuln*r**ility w*s * r*sult o* insu**i*i*nt p*rmission ****ks in t** **n*l*r *or m*nu*l *lows. T** *il* `*pi/sr*/*lows.ts` w*s mo*i*i** wit*in t** `