CVE-2026-53760
## Summary The `modules/plugins.php` endpoint handles plugin installation, uninstallation, and update operations via GET requests without CSRF token validation. Because these are top-level navigations, browsers include `SameSite=Lax` session cookies. An attacker crafts a malicious page that, when an authenticated administrator visits it, triggers arbitrary plugin operations. The uninstall operation executes DROP TABLE SQL scripts and destroys plugin data. ## Details `modules/plugins.php` reads the `mode` (install, uninstall, update) and `name` parameters directly from `$_GET`: ```php // modules/plugins.php $mode = admFuncVariableIsValid($_GET, 'mode', 'string'); $pluginName = admFuncVariableIsValid($_GET, 'name', 'string'); ``` The file contains zero calls to `SecurityUtils::validateCsrfToken()`. Other administrative operations in the same codebase (such as the `save` mode in preferences) validate CSRF tokens correctly. Because the operations use GET requests, modern browsers send `SameSite=Lax` cookies on top-level GET navigations (link clicks, redirects, `window.location` assignments). A cross-origin page triggers these operations by navigating the browser to the vulnerable URL. The `doUninstall()` function is the most destructive path. It executes SQL scripts from the plugin's `db_scripts/` directory, which contain `DROP TABLE` statements: ```php // modules/plugins.php - doUninstall() function doUninstall($pluginFolder) { // Reads and executes SQL from $pluginFolder/db_scripts/uninstall.sql // Contains DROP TABLE statements } ``` ## Proof of Concept The following Playwright test demonstrates a cross-origin CSRF attack. An attacker hosts a page on a different origin that redirects an authenticated administrator's browser to the uninstall endpoint: ```javascript // playwright-csrf-poc.js const { test, expect } = require('@playwright/test'); test('CSRF plugin uninstall via cross-origin redirect', async ({ browser }) => { const context = await
Properties
- ghsa_id
- GHSA-hm42-q32m-vj4f
- severity
- medium
- summary
- Admidio: CSRF on Plugin Install, Uninstall, and Update via Unprotected GET Requests
- cvss_score
- 5.2
- cve_id
- CVE-2026-53760
- cvss_vector
- CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:N/I:H/A:L
- is_ghsa_only
- false
- ghsa_published
- 2026-07-09T13:44:40Z
- source_url
- https://github.com/advisories/GHSA-hm42-q32m-vj4f
- ghsa_updated
- 2026-07-09T13:44:41Z
Related Entities (4)
VULNERABLE_TO (1)
AFFECTS (1)
HAS_WEAKNESS (1)
REPORTED_BY (1)
Explore deeper with Ninja Signal's threat intelligence graph