
PoC & dokumentasi untuk CVE-2026-7275: Moodle Google Drive Repository (repository_googledocs) — Path Traversal / Arbitrary File Write yang dapat mengarah ke RCE pada versi Moodle yang belum dipatch.
PoC e documentação para CVE-2026-7275: Repositório Google Drive do Moodle (repository_googledocs) — Path Traversal / Escrita Arbitrária de Arquivos que pode levar a RCE em versões do Moodle não corrigidas.
Aviso: Apenas para pesquisa de segurança autorizada, auditoria e educação defensiva. Não use em sistemas sem permissão por escrito.
| Campo | Valor |
|---|---|
| CVE | CVE-2026-7275 |
| Aviso | MSA-26-0006 |
| Rastreador | MDL-88423 |
| Componente | repository_googledocs |
| CWE | CWE-22 (Path Traversal) |
| Severidade | Crítico (CVSS ~9.1) |
| Afetado | Moodle 5.1.0–5.1.3, 5.0.0–5.0.6, 4.5.0–4.5.10 |
| Corrigido em | 5.1.4, 5.0.7, 4.5.11 |
O plugin do Google Drive no Moodle baixa arquivos da API do Google usando o metadado nome do arquivo ($originalfile->name). Antes do patch, esse nome era passado para prepare_file() sem sanitização, permitindo que um payload como ../../../../public/shell.php escrevesse arquivos fora do diretório temporário → potencial RCE se o webroot executar PHP.
Não é necessário saber o caminho absoluto — apenas travessia relativa (../ repetido) a partir da pasta temporária aleatória.
├── README.md ← resumo (este arquivo)
├── CONTRIBUTORS.md ← 0xNuts + Cursor
├── EXPLOIT.md ← cadeia de ataque, payload, pré-requisitos
├── PATCH.md ← análise do patch e mitigação
└── poc/
└── demo_path_traversal.py ← demonstração local pre-patch vs post-patch
python poc/demo_path_traversal.py
A saída mostra o caminho ESCAPE (pre-patch) vs contido (post-patch).
// public/repository/lib.php — prepare_file()
return sprintf('%s/%s', make_request_directory(), clean_param($filename, PARAM_FILE));
Detalhes completos: PATCH.md
| 0xNuts | @ExDev994 — pesquisador principal, PoC, documentação |
| Cursor | cursor.com — co-pesquisador, análise estática, exploração e descrição do patch |
Detalhes: CONTRIBUTORS.md
/*
* CVE-2026-7275 — break to understand, patch to defend.
* Contributors: 0xNuts (@ExDev994) + Cursor
*/
| Pré-requisito | Detalhe |
|---|
| Conta Moodle | Usuário autenticado |
| Capability | repository/googledocs:view |
| OAuth | Google Drive vinculado ao usuário Moodle |
| Plugin | repository_googledocs ativo |
| Versão | Não corrigida (< 5.1.4 / < 5.0.7 / < 4.5.11) |