Skip to content

Commit 9fb05af

Browse files
1 parent c1bf673 commit 9fb05af

2 files changed

Lines changed: 114 additions & 0 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-393c-p46r-7c95",
4+
"modified": "2026-04-04T06:06:39Z",
5+
"published": "2026-04-04T06:06:39Z",
6+
"aliases": [],
7+
"summary": "Directus: Path Traversal and Broken Access Control in File Management API",
8+
"details": "## Summary\n\nCritical vulnerabilities were identified in the Directus file management API that allow unauthorized manipulation of file storage paths and metadata. These issues enable attackers to overwrite files belonging to other users, write files outside intended storage boundaries via path traversal, and potentially achieve remote code execution under certain conditions.\n\n## Details\n\nThe file management API accepts user-controlled parameters that should be restricted to server-side logic only. Specifically, the `filename_disk` parameter can be manipulated in both `POST /files` and `PATCH /files/{id}` requests, enabling two attack vectors:\n\n1. **Path Traversal**: By specifying paths containing `../` sequences in the `filename_disk` parameter during file upload, attackers can write files outside the intended storage prefix.\n\n2. **Broken Access Control**: By modifying the `filename_disk` parameter to reference another user's file, attackers can overwrite legitimate files with malicious content while manipulating metadata fields (such as `uploaded_by`) to obscure the tampering.\n\n## Impact\n\n- **Unauthorized File Overwrite**: Attackers can replace legitimate files with malicious content, creating significant risk of malware propagation and data corruption.\n\n- **Storage Boundary Bypass**: Files can be written to arbitrary locations outside the designated storage area, potentially affecting system configurations or application components.\n\n- **Remote Code Execution**: If the storage backend is shared with the extensions location, attackers can deploy malicious extensions that execute arbitrary code when loaded (either via service restart or administrator-triggered extension reload).\n\n- **Data Integrity Compromise**: Sensitive files can be tampered with or replaced without visible indication in the application interface, undermining trust in stored data.\n\n## Mitigation\n\nThe `filename_disk` parameter should not be accepted from client input. File paths must be generated exclusively using server-side logic. If client input must be accepted for any path-like parameters, implementations should normalize paths and strictly verify containment within allowed directories, rejecting path traversal sequences, absolute paths, and path separator variants.",
9+
"severity": [
10+
{
11+
"type": "CVSS_V3",
12+
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N"
13+
}
14+
],
15+
"affected": [
16+
{
17+
"package": {
18+
"ecosystem": "npm",
19+
"name": "directus"
20+
},
21+
"ranges": [
22+
{
23+
"type": "ECOSYSTEM",
24+
"events": [
25+
{
26+
"introduced": "0"
27+
},
28+
{
29+
"fixed": "11.17.0"
30+
}
31+
]
32+
}
33+
]
34+
}
35+
],
36+
"references": [
37+
{
38+
"type": "WEB",
39+
"url": "https://github.com/directus/directus/security/advisories/GHSA-393c-p46r-7c95"
40+
},
41+
{
42+
"type": "PACKAGE",
43+
"url": "https://github.com/directus/directus"
44+
}
45+
],
46+
"database_specific": {
47+
"cwe_ids": [
48+
"CWE-284",
49+
"CWE-915"
50+
],
51+
"severity": "HIGH",
52+
"github_reviewed": true,
53+
"github_reviewed_at": "2026-04-04T06:06:39Z",
54+
"nvd_published_at": null
55+
}
56+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"schema_version": "1.4.0",
3+
"id": "GHSA-8m32-p958-jg99",
4+
"modified": "2026-04-04T06:06:00Z",
5+
"published": "2026-04-04T06:06:00Z",
6+
"aliases": [
7+
"CVE-2026-35408"
8+
],
9+
"summary": "Directus: Missing Cross-Origin Opener Policy",
10+
"details": "## Summary\n\nDirectus's Single Sign-On (SSO) login pages lacked a `Cross-Origin-Opener-Policy` (COOP) HTTP response header. Without this header, a malicious cross-origin window that opens the Directus login page retains the ability to access and manipulate the `window` object of that page. An attacker can exploit this to intercept and redirect the OAuth authorization flow to an attacker-controlled OAuth client, causing the victim to unknowingly grant access to their authentication provider account (e.g. Google, Discord).\n\n## Impact\n\nA successful attack allows the attacker to obtain an OAuth access token for the victim's third-party identity provider account. Depending on the scopes authorized, this can lead to:\n- Unauthorized access to the victim's linked identity provider account\n- Account takeover of the Directus instance if the attacker can authenticate using the stolen credentials or provider session\n\n## Patches\n\nThis issue has been addressed by adding the `Cross-Origin-Opener-Policy: same-origin` HTTP response header to SSO-related endpoints. This header instructs the browser to place the page in its own browsing context group, severing any reference the opener window may hold.\n\n## Workarounds\n\nUsers who are unable to upgrade immediately can mitigate this vulnerability by configuring their reverse proxy or web server to add the following HTTP response header to all Directus responses: `Cross-Origin-Opener-Policy: same-origin`",
11+
"severity": [
12+
{
13+
"type": "CVSS_V3",
14+
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N"
15+
}
16+
],
17+
"affected": [
18+
{
19+
"package": {
20+
"ecosystem": "npm",
21+
"name": "directus"
22+
},
23+
"ranges": [
24+
{
25+
"type": "ECOSYSTEM",
26+
"events": [
27+
{
28+
"introduced": "0"
29+
},
30+
{
31+
"fixed": "11.17.0"
32+
}
33+
]
34+
}
35+
]
36+
}
37+
],
38+
"references": [
39+
{
40+
"type": "WEB",
41+
"url": "https://github.com/directus/directus/security/advisories/GHSA-8m32-p958-jg99"
42+
},
43+
{
44+
"type": "PACKAGE",
45+
"url": "https://github.com/directus/directus"
46+
}
47+
],
48+
"database_specific": {
49+
"cwe_ids": [
50+
"CWE-346",
51+
"CWE-693"
52+
],
53+
"severity": "HIGH",
54+
"github_reviewed": true,
55+
"github_reviewed_at": "2026-04-04T06:06:00Z",
56+
"nvd_published_at": null
57+
}
58+
}

0 commit comments

Comments
 (0)