mediumCVSS 5.2Vulnerability

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)

[Software]composer/admidio/admidio

AFFECTS (1)

[Software]composer/admidio/admidio

HAS_WEAKNESS (1)

[Weakness]Cross-Site Request Forgery (CSRF)

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-53760 (CVSS 5.2) — Ninja Signal Threat Intelligence | Ninja Signal