O endpoint `modules/plugins.php` manipula a instalação, desinstalação e atualização de plug- ins via solicitações GET sem validação de tokens CSRF. Como estas são navegações de nível superior, os navegadores incluem cookies de sessão `SameSite=Lax`. Um atacante cria uma página maligna que, quando um administrador autenticado a visita, ativa operações de plug- in arbitrárias. A operação de desinstalação executa scripts SQL DROP TABLE e destrói dados de plug- in. `modules/plugins.php` lê os parâmetros `modo` (instalar, desinstalar, atualizar) e `nome' diretamente a partir de `$_GET`: ``` php // modules/plugins.php $mode = admFuncVariableIsValid($_GET, 'mode', 'string'); $pluginName = admFuncVariableIsValid($_GET, 'name', 'string'); ``` O arquivo contém zero chamadas para `SecurityUtils::validateCsrfToken()`. Outras operações administrativas na mesma base de códigos (como o modo `save` em preferências) validam corretamente os tokens CSRF.
Como as operações usam solicitações GET, navegadores modernos enviam cookies `SameSite=Lax` nas navegações GET de nível superior (link clicks, redirecionamentos, atribuições `window.location`). Uma página de origem cruzada desencadeia estas operações navegando pelo navegador para o URL vulnerável. A função ` doUninstall()` é o caminho mais destrutivo. Ele executa scripts SQL a partir do diretório `db_scripts/` do plugin, que contém instruções `DROP TABLE`: ``` php // modules/plugins.php - doUninstall() função doUninstall($pluginFolder) { // lê e executa SQL a partir de $pluginFolder/db_scripts/uninstall.sql // Contém instruções DROP TABLE } ``` O teste de Playwright a seguir demonstra um ataque CSRF de origem cruzada. Um atacante hospeda uma página em uma origem diferente que redireciona o navegador de um administrador autenticado para o objetivo de desinstalação:.
``` javascript // dramaturgo- csrf- poc.js const { teste, expect } = require('@playwright/ teste'); test('CSRF plugin desinstalar através de redirecionamento de origem cruzada', async ({ browser }) => { contexto de const = aguardar browser.newContext(); const page = aguardar context.newPage(); // Passo 1: Admin entra no Admidio aguarde page.goto(' aguarde page.fill('#usr_login_name', 'admin'); aguarde page.fill('#usr_password', 'password'); aguarde page.click('#btn_login'); aguarde page.waitForURL('**/overview.php');.
// Passo 2: A página do admin é controlada pelo atacante em diferentes origens // A página do atacante contém: // window.location = ' aguarde page.goto(' // Passo 3: O navegador segue o redirecionamento com o SameSite=Lax cookies // O plug- in de aniversário é desinstalado, as tabelas de banco de dados deixadas cair aguardam a página. waitForURL('**/plugins.php*'); // Verifique que o plugin foi desinstalado aguardando page.goto(' conteúdo const = aguardando page.content(); expect( content).not.toContain('bithday'); }); ```.
Página de atacante simplificada (`csrf.html` hospedada na origem do atacante). ```html window.location = ' ``` Quando um administrador visita esta página, o navegador navega para o URL de desinstalação do Admidio com cookies de sessão completa, e o servidor desinstala o plug- in de aniversário. Um atacante não autenticado engana um administrador do Admidio para visitar uma página web maliciosa (via phishing, post de fórum ou conteúdo incorporado) que executa operações de plug- in sem indicação visível. A operação ` uninstall` executa instruções DROP TABLE, causando perda de dados irreversível. A operação `install` ativa plugins com vulnerabilidades conhecidas. A operação de atualização interrompe a funcionalidade do plug- in. A vítima só precisa visitar uma única página.
Mude o plug- in instalar, desinstalar e atualizar as operações de solicitações GET para POST. Adicionar `SecurityUtils::validateCsrfToken()` verifica todas as operações de mudança de estado em `modules/plugins.php`, consistentes com o padrão usado em outras partes da base de códigos. --- *Controlado por [aisafe.io](. Registro de aconselhamento: GHSA-hm 42 - q 32 m- vj 4 f. Identificadores relacionados: CVE- 2026 - 53760. Tempo: GitHub Advisory Database publicou este registro em 2026 - 07 - 09 T 13: 44: 40.000 Z e lista a sua última modificação como 2026 - 07 - 09 T 13: 44: 40.000 Z.
Gravidade: MODERAR. Dados de pontuação publicados: CVSS_V 3: CVSS: 3.1 /AV:N/AC:L/PR:H/UI:R/S:U/C:N/I:H/A:L. Informações sobre software e versão afetadas: Pacote de pacotes admidio/admidio — ECOSISTEM: introduzido 0, última afetada 5.0.11. Classificação e evidência: identificadores de fraqueza CWE- 352. O registro contém 2 suporte de referências nestes tipos: WEB, PACKAGE.