GHSA-H6CX-GJXX-V25C
Vulnerability from github – Published: 2026-09-02 14:57 – Updated: 2026-09-02 14:57Impact
A media move authorization bypass (IDOR) lets a backend user move a media out of a collection they have no access to.
The media move endpoint resolves its permission check from the collection value in the request rather than from the media's real collection. MediaManager::move() then reassigns the media without re-checking its actual source collection. A user who has edit rights on collection A but no rights on a restricted collection B can move a media that lives in B by naming A in the request. The move succeeds, the media ends up in A, and the user can then view and download content they were never allowed to see.
This only affects installations that use per-collection (object level) permissions to restrict some collections. Exploitation requires an authenticated backend user with edit rights on at least one collection, and knowledge of the target media id.
Patches
Fixed in 2.6.25 and 3.0.8. MediaManager::move() now verifies edit permission on the media's real source collection and on the destination collection before moving it.
Workarounds
If you cannot upgrade immediately:
- Restrict the media edit permission to trusted users, so untrusted users cannot trigger a move.
- Apply the fix manually by adding an edit permission check on the media's real source collection (and the destination) inside
MediaManager::move().
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 2.6.24"
},
"package": {
"ecosystem": "Packagist",
"name": "sulu/sulu"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "2.6.25"
}
],
"type": "ECOSYSTEM"
}
]
},
{
"package": {
"ecosystem": "Packagist",
"name": "sulu/sulu"
},
"ranges": [
{
"events": [
{
"introduced": "3.0.0-alpha1"
},
{
"fixed": "3.0.8"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-82395"
],
"database_specific": {
"cwe_ids": [
"CWE-639",
"CWE-863"
],
"github_reviewed": true,
"github_reviewed_at": "2026-09-02T14:57:25Z",
"nvd_published_at": "2026-08-31T22:17:22Z",
"severity": "MODERATE"
},
"details": "### Impact\n\nA media move authorization bypass (IDOR) lets a backend user move a media out of a collection they have no access to.\n\nThe media move endpoint resolves its permission check from the `collection` value in the request rather than from the media\u0027s real collection. `MediaManager::move()` then reassigns the media without re-checking its actual source collection. A user who has edit rights on collection A but no rights on a restricted collection B can move a media that lives in B by naming A in the request. The move succeeds, the media ends up in A, and the user can then view and download content they were never allowed to see.\n\nThis only affects installations that use per-collection (object level) permissions to restrict some collections. Exploitation requires an authenticated backend user with edit rights on at least one collection, and knowledge of the target media id.\n\n### Patches\n\nFixed in **2.6.25** and **3.0.8**. `MediaManager::move()` now verifies edit permission on the media\u0027s real source collection and on the destination collection before moving it.\n\n### Workarounds\n\nIf you cannot upgrade immediately:\n\n- Restrict the media edit permission to trusted users, so untrusted users cannot trigger a move.\n- Apply the fix manually by adding an edit permission check on the media\u0027s real source collection (and the destination) inside `MediaManager::move()`.",
"id": "GHSA-h6cx-gjxx-v25c",
"modified": "2026-09-02T14:57:25Z",
"published": "2026-09-02T14:57:25Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/sulu/sulu/security/advisories/GHSA-h6cx-gjxx-v25c"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-82395"
},
{
"type": "WEB",
"url": "https://github.com/sulu/sulu/commit/2b959de75d61b98433e42db462c246ed9e4ce793"
},
{
"type": "PACKAGE",
"url": "https://github.com/sulu/sulu"
},
{
"type": "WEB",
"url": "https://github.com/sulu/sulu/releases/tag/2.6.25"
},
{
"type": "WEB",
"url": "https://github.com/sulu/sulu/releases/tag/3.0.8"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Sulu: Media move/update authorization bypass (IDOR)"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.