CVE-2026-47226
Admidio: Authorization bypass in file_delete enables cross-folder file removal by authenticated users without delete privileges
Admidio is an open-source user management solution. Prior to version 5.0.10, an authenticated Admidio member with upload rights on any one folder can permanently delete files from folders where they have only view access. The authorization check at the top of modules/documents-files.php evaluates upload rights against the attacker-supplied folder_uuid URL parameter — not the file's actual parent folder. The file_delete handler then only verifies view rights on the file's real location, never upload rights. By passing a folder they legitimately own in folder_uuid while targeting a file in a restricted folder via file_uuid, an attacker bypasses the upload-right check entirely and permanently deletes the file. This is an incomplete fix of GHSA-rmpj-3x5m-9m5f, which was patched in v5.0.7 but remains exploitable in v5.0.9. User should upgrade to v5.0.10 to receive an updated fix.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.5
Admidio: Authorization bypass in file_delete enables cross-folder file removal by authenticated users without delete privileges
Admidio is an open-source user management solution. Prior to version 5.0.10, an authenticated Admidio member with upload rights on any one folder can permanently delete files from folders where they have only view access. The authorization check at the top of modules/documents-files.php evaluates upload rights against the attacker-supplied folder_uuid URL parameter — not the file's actual parent folder. The file_delete handler then only verifies view rights on the file's real location, never upload rights. By passing a folder they legitimately own in folder_uuid while targeting a file in a restricted folder via file_uuid, an attacker bypasses the upload-right check entirely and permanently deletes the file. This is an incomplete fix of GHSA-rmpj-3x5m-9m5f, which was patched in v5.0.7 but remains exploitable in v5.0.9. User should upgrade to v5.0.10 to receive an updated fix.
- Record
CVE-2026-47226- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-639, CWE-862
- Updated
- 2026-11-02
EUVDEUVD-2026-57211
6.5
Admidio is an open-source user management solution. Prior to version 5.0.10, an authenticated Admidio member with upload rights on any one folder can permanently delete files from folders where they have only view access. The authorization check at the top of modules/documents-files.php evaluates upload rights against the attacker-supplied folder_uuid URL parameter — not the file's actual parent folder. The file_delete handler then only verifies view rights on the file's real location, never upload rights. By passing a folder they legitimately own in folder_uuid while targeting a file in a restricted folder via file_uuid, an attacker bypasses the upload-right check entirely and permanently deletes the file. This is an incomplete fix of GHSA-rmpj-3x5m-9m5f, which was patched in v5.0.7 but remains exploitable in v5.0.9. User should upgrade to v5.0.10 to receive an updated fix.
- Record
EUVD-2026-57211- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-qc4c-hrmc-4f78
6.5
Admidio: Authorization bypass in file_delete enables cross-folder file removal by authenticated users without delete privileges
Summary
An authenticated Admidio member with upload rights on any one folder can permanently delete files from folders where they have only view access. The authorization check at the top of modules/documents-files.php evaluates upload rights against the attacker-supplied folder_uuid URL parameter — not the file's actual parent folder. The file_delete handler then only verifies view rights on the file's real location, never upload rights. By passing a folder they legitimately own in folder_uuid while targeting a file in a restricted folder via file_uuid, an attacker bypasses the upload-right check entirely and permanently deletes the file.
This is an incomplete fix of GHSA-rmpj-3x5m-9m5f, which was patched in v5.0.7 but remains exploitable in v5.0.9.
Affected Version: Admidio v5.0.9
Details
Root Cause File: modules/documents-files.php
Issue 1 — folder_uuid is not required for file_delete mode (line 67):
$getFolderUUID = admFuncVariableIsValid($_GET, 'folder_uuid', 'uuid', array(
'requireValue' => !in_array($getMode, array('list', 'file_delete', 'download'))
));
Issue 2 — The top-level upload-right check loads the folder from the attacker-controlled URL parameter, not the file's actual parent folder (lines 79–88):
if ($getMode != 'list' && $getMode != 'download') {
$folder = new Folder($gDb);
$folder->getFolderForDownload($getFolderUUID); // uses attacker-supplied UUID
if (!$folder->hasUploadRight()) {
$gMessage->show($gL10n->get('SYS_NO_RIGHTS'));
}
}
Issue 3 — The file_delete handler only checks view rights via getFileForDownload(). Upload rights on the file's actual folder are never verified (lines 165–178):
case 'file_delete':
SecurityUtils::validateCsrfToken($_POST['adm_csrf_token']);
$file = new File($gDb);
$file->getFileForDownload($getFileUUID); // view-only check, not upload
$file->delete();
echo json_encode(array('status' => 'success'));
break;
File::getFileForDownload() in src/Documents/Entity/File.php checks only view-role membership — it never verifies upload rights.
Attack Scenario
- The organization has two folders:
PrivateFolder(role A: view-only) andUploadFolder(role A: upload + view). - Attacker is a member of role A — they have legitimate upload access to
UploadFolderonly. - Attacker enumerates a file UUID in
PrivateFolderusingfile_listmode, which is accessible to anyone with view rights. - Attacker sends a
file_deletePOST usingUploadFolder's UUID infolder_uuidand thePrivateFolderfile UUID infile_uuid. - Server checks upload rights against
UploadFolder→ passes. - Server deletes the file from
PrivateFolderwithout ever checking upload rights there.
Prerequisites:
- Authenticated Admidio member account
- Upload rights on at least one folder (legitimately assigned)
- View rights on the target folder (sufficient to enumerate file UUIDs via
file_listmode) - Knowledge of a target file UUID (obtainable from the folder listing)
PoC
Step 1 — Authenticate and obtain login CSRF token:
curl -c /tmp/admidio_cookies.txt http://TARGET/system/login.php > /tmp/login.html
LOGIN_CSRF=$(grep -o 'name="adm_csrf_token"[^>]*value="[^"]*"' /tmp/login.html \
| grep -o 'value="[^"]*"' | cut -d'"' -f2)
curl -b /tmp/admidio_cookies.txt -c /tmp/admidio_cookies.txt \
-X POST "http://TARGET/system/login.php?mode=check" \
-d "usr_login_name=MEMBER&usr_password=PASSWORD&adm_csrf_token=${LOGIN_CSRF}"
Step 2 — Extract authenticated session CSRF token:
AUTH_CSRF=$(curl -s -b /tmp/admidio_cookies.txt \
"http://TARGET/system/file_upload.php?module=documents_files&uuid=UPLOAD_FOLDER_UUID" \
| grep -oP 'name:\s*"adm_csrf_token",\s*value:\s*"\K[^"]+')
…
- Record
GHSA-qc4c-hrmc-4f78- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-639, CWE-862
- Updated
- 2026-11-02
NVD
6.5
Admidio is an open-source user management solution. Prior to version 5.0.10, an authenticated Admidio member with upload rights on any one folder can permanently delete files from folders where they have only view access. The authorization check at the top of modules/documents-files.php evaluates upload rights against the attacker-supplied folder_uuid URL parameter — not the file's actual parent folder. The file_delete handler then only verifies view rights on the file's real location, never upload rights. By passing a folder they legitimately own in folder_uuid while targeting a file in a restricted folder via file_uuid, an attacker bypasses the upload-right check entirely and permanently deletes the file. This is an incomplete fix of GHSA-rmpj-3x5m-9m5f, which was patched in v5.0.7 but remains exploitable in v5.0.9. User should upgrade to v5.0.10 to receive an updated fix.
- Record
CVE-2026-47226- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-639, CWE-862
- Updated
- 2026-11-02
OSV
6.5
Admidio: Authorization bypass in file_delete enables cross-folder file removal by authenticated users without delete privileges
Admidio is an open-source user management solution. Prior to version 5.0.10, an authenticated Admidio member with upload rights on any one folder can permanently delete files from folders where they have only view access. The authorization check at the top of modules/documents-files.php evaluates upload rights against the attacker-supplied folder_uuid URL parameter — not the file's actual parent folder. The file_delete handler then only verifies view rights on the file's real location, never upload rights. By passing a folder they legitimately own in folder_uuid while targeting a file in a restricted folder via file_uuid, an attacker bypasses the upload-right check entirely and permanently deletes the file. This is an incomplete fix of GHSA-rmpj-3x5m-9m5f, which was patched in v5.0.7 but remains exploitable in v5.0.9. User should upgrade to v5.0.10 to receive an updated fix.
- Record
CVE-2026-47226- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-639, CWE-862
- Updated
- 2026-11-02
OSVGHSA-qc4c-hrmc-4f78
6.5
Admidio: Authorization bypass in file_delete enables cross-folder file removal by authenticated users without delete privileges
Summary
An authenticated Admidio member with upload rights on any one folder can permanently delete files from folders where they have only view access. The authorization check at the top of modules/documents-files.php evaluates upload rights against the attacker-supplied folder_uuid URL parameter — not the file's actual parent folder. The file_delete handler then only verifies view rights on the file's real location, never upload rights. By passing a folder they legitimately own in folder_uuid while targeting a file in a restricted folder via file_uuid, an attacker bypasses the upload-right check entirely and permanently deletes the file.
This is an incomplete fix of GHSA-rmpj-3x5m-9m5f, which was patched in v5.0.7 but remains exploitable in v5.0.9.
Affected Version: Admidio v5.0.9
Details
Root Cause File: modules/documents-files.php
Issue 1 — folder_uuid is not required for file_delete mode (line 67):
$getFolderUUID = admFuncVariableIsValid($_GET, 'folder_uuid', 'uuid', array(
'requireValue' => !in_array($getMode, array('list', 'file_delete', 'download'))
));
Issue 2 — The top-level upload-right check loads the folder from the attacker-controlled URL parameter, not the file's actual parent folder (lines 79–88):
if ($getMode != 'list' && $getMode != 'download') {
$folder = new Folder($gDb);
$folder->getFolderForDownload($getFolderUUID); // uses attacker-supplied UUID
if (!$folder->hasUploadRight()) {
$gMessage->show($gL10n->get('SYS_NO_RIGHTS'));
}
}
Issue 3 — The file_delete handler only checks view rights via getFileForDownload(). Upload rights on the file's actual folder are never verified (lines 165–178):
case 'file_delete':
SecurityUtils::validateCsrfToken($_POST['adm_csrf_token']);
$file = new File($gDb);
$file->getFileForDownload($getFileUUID); // view-only check, not upload
$file->delete();
echo json_encode(array('status' => 'success'));
break;
File::getFileForDownload() in src/Documents/Entity/File.php checks only view-role membership — it never verifies upload rights.
Attack Scenario
- The organization has two folders:
PrivateFolder(role A: view-only) andUploadFolder(role A: upload + view). - Attacker is a member of role A — they have legitimate upload access to
UploadFolderonly. - Attacker enumerates a file UUID in
PrivateFolderusingfile_listmode, which is accessible to anyone with view rights. - Attacker sends a
file_deletePOST usingUploadFolder's UUID infolder_uuidand thePrivateFolderfile UUID infile_uuid. - Server checks upload rights against
UploadFolder→ passes. - Server deletes the file from
PrivateFolderwithout ever checking upload rights there.
Prerequisites:
- Authenticated Admidio member account
- Upload rights on at least one folder (legitimately assigned)
- View rights on the target folder (sufficient to enumerate file UUIDs via
file_listmode) - Knowledge of a target file UUID (obtainable from the folder listing)
PoC
Step 1 — Authenticate and obtain login CSRF token:
curl -c /tmp/admidio_cookies.txt http://TARGET/system/login.php > /tmp/login.html
LOGIN_CSRF=$(grep -o 'name="adm_csrf_token"[^>]*value="[^"]*"' /tmp/login.html \
| grep -o 'value="[^"]*"' | cut -d'"' -f2)
curl -b /tmp/admidio_cookies.txt -c /tmp/admidio_cookies.txt \
-X POST "http://TARGET/system/login.php?mode=check" \
-d "usr_login_name=MEMBER&usr_password=PASSWORD&adm_csrf_token=${LOGIN_CSRF}"
Step 2 — Extract authenticated session CSRF token:
AUTH_CSRF=$(curl -s -b /tmp/admidio_cookies.txt \
"http://TARGET/system/file_upload.php?module=documents_files&uuid=UPLOAD_FOLDER_UUID" \
| grep -oP 'name:\s*"adm_csrf_token",\s*value:\s*"\K[^"]+')
…
- Record
GHSA-qc4c-hrmc-4f78- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-639, CWE-862
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
admidio/admidioPackagist |
through 5.0.9 | 5.0.10 |
admidio/admidioPackagist |
before 5.0.10, plus listed versions 4.1.04.1.3v4.2-Beta.1v4.2-Beta.2v4.2-Beta.3 Show 45 moreShow lessv4.2.0v4.2.1v4.2.10v4.2.11v4.2.12v4.2.13v4.2.14v4.2.2v4.2.3v4.2.4v4.2.5v4.2.6v4.2.7v4.2.8v4.2.9v4.3-Beta.1v4.3-Beta.3v4.3-Beta.4v4.3-Beta.5v4.3.0v4.3.1v4.3.10v4.3.11v4.3.12v4.3.13v4.3.14v4.3.15v4.3.16v4.3.17v4.3.2v4.3.3v4.3.4v4.3.5v4.3.6v4.3.7v4.3.8v4.3.9v5.0-Beta.1v5.0-Beta.2v5.0-Beta.3v5.0.0v5.0.1v5.0.2v5.0.3v5.0.4 |
5.0.10 |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-47226 is a medium vulnerability (CVSS 6.5) in Admidio, published May 29, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.35%, the 28th percentile. Fixed in admidio/admidio 5.0.10.
References
github.com/Admidio/admidio/security/advisories/GHSA-qc4c-hrmc-4f78
github.com/Admidio/admidio/security/advisories/GHSA-rmpj-3x5m-9m5f
github.com/advisories/GHSA-qc4c-hrmc-4f78
github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47226.json
nvd.nist.gov/vuln/detail/CVE-2026-47226
github.com/Admidio/admidio
Left out here: 5 versions and the rest of 2 source descriptions. The JSON record has them.