# Segurança Moodle após o PHP2Shell: como proteger corretamente as plataformas de aprendizagem

> Proteger o Moodle após o PHP2Shell: verificar o PHP em Servidor > Ambiente, reiniciar o cron, proteger o moodledata e controlar plugins e contas de admin.

Fonte: https://phpsos.de/pt/plattformen/moodle/  
Atualizado em: 25/10/2026  
Prestador: PHP SOS, Assistência de emergência PHP e segurança de servidores. Ajuda imediata por WhatsApp: https://wa.me/491736494914?text=Ol%C3%A1%2C%20PHP%20SOS%2C%20precisamos%20de%20ajuda%20com%20o%20nosso%20servidor%20PHP.%20Empresa%3A%20%E2%80%A6%20Site%3A%20%E2%80%A6

**Em resumo:** após o PHP2Shell, a segurança do Moodle depende do PHP do servidor, não do Moodle. Como as plataformas de aprendizagem tratam dados de alunos, estudantes e colaboradores, é importante agir depressa. Aplique o patch ao PHP para web e cron, reinicie todos os processos e verifique `config.php`, `moodledata`, plugins e contas de admin.

## O que o PHP2Shell significa para os operadores de Moodle

O Moodle é difundido em escolas, universidades, formação contínua e formações internas em empresas. A plataforma gere nomes, endereços de e-mail, inscrições em cursos, notas, entregas de provas e contributos em fóruns, nas escolas muitas vezes de menores. Segundo a equipa do PHP, as vulnerabilidades PHP CVE-2026-109618 e CVE-2026-109619 permitem executar código malicioso remotamente sem autenticação.

Os servidores Moodle são quase sempre acessíveis a partir da Internet, porque os alunos trabalham em casa. O BSI (Gabinete Federal Alemão para a Segurança da Informação) recomenda, com o nível de alerta 3, a atualização imediata e, se isso não for possível, retirar temporariamente os servidores web da rede. Para escolas e entidades de formação isto é difícil do ponto de vista organizativo, mas planeável. Indicações específicas do setor encontra-as em [Segurança informática para escolas e entidades de formação](https://phpsos.de/pt/branchen/schulen-bildung/).

## Segurança do Moodle: verificar a versão do PHP para web e cron

Em **Administração do site > Servidor > Ambiente**, o Moodle verifica a versão do PHP e outros requisitos. Em Servidor > Informação do PHP, os administradores veem além disso os dados completos do PHP. Ambos descrevem o PHP web.

O Moodle precisa também de uma tarefa cron que execute regularmente `admin/cli/cron.php` através do PHP da linha de comandos. Esta versão pode divergir e também tem de ter o patch aplicado. As versões upstream corrigidas são 8.5.12, 8.4.27, 8.3.36 e 8.2.35; os backports têm muitas vezes números mais antigos. Quais as versões do PHP que a sua versão do Moodle suporta, verifique-o nos requisitos de sistema da documentação em moodle.org. Como reiniciar depois todos os processos de forma limpa, está em [Reiniciar o PHP-FPM e todos os workers](https://phpsos.de/pt/php2shell/php-fpm-neustart/).

## Pastas e configuração no Moodle

| Local | Conteúdo | Ponto de verificação |
|---|---|---|
| `config.php` | Acesso à base de dados, `wwwroot`, caminho para `moodledata` | Código inserido, alterar a palavra-passe em caso de suspeita |
| `moodledata/` | Armazenamento de ficheiros, entregas, sessões, caches | Fora da raiz de documentos, sem ficheiros PHP |
| `mod/`, `blocks/`, `local/`, `theme/` | Atividades, blocos, extensões locais, designs | Plugins desconhecidos ou alterados |
| `admin/cli/` | Scripts de linha de comandos | Utilizáveis apenas por CLI |

O Moodle oferece uma definição que impede a alteração de caminhos de programas através da interface web. Pertence ao `config.php` e dificulta chamar programas no servidor através de uma conta de admin sequestrada:

```php
$CFG->preventexecpath = true;
```

Verificações inofensivas na linha de comandos, como utilizador do servidor web:

```bash
# Mostrar as verificações de estado e de segurança do próprio Moodle
php admin/cli/checks.php
php admin/cli/checks.php --type=security
# Procurar ficheiros PHP no diretório de dados (adaptar o caminho)
find /pfad/zu/moodledata -type f -name "*.php"
```

> **Importante:**
> Perante uma suspeita de fuga de dados numa escola ou universidade, ficam rapidamente envolvidas várias entidades: direção da escola, entidade titular, encarregados de proteção de dados e, eventualmente, a autoridade de controlo. Guarde os registos a partir de 20/10/2026 e documente cada medida com a hora.

## Plugins, contas de admin e uploads

Uma indicação prática para o planeamento: as atualizações do PHP e os reinícios não devem coincidir com períodos de exames ou testes online em curso. O Moodle tem um modo de manutenção que informa previamente os utilizadores. Contra o PHP2Shell, porém, não protege, pois também a página de manutenção é entregue pelo PHP.

O Moodle vive de plugins: atividades, ferramentas de avaliação, ligações a videoconferências e à gestão escolar. Cada plugin é código PHP adicional e tem de ser compatível com a versão do Moodle. Em Administração do site, o Moodle mostra as atualizações disponíveis para o núcleo e para os plugins. Remova por completo os plugins que já ninguém usa.

Verifique a lista dos administradores do site e as funções globais com direitos abrangentes. Os professores e os criadores de cursos normalmente não precisam de direitos globais. Ative a autenticação de dois fatores pelo menos para os administradores. Os tipos de ficheiro permitidos para uploads devem ser tão restritos quanto possível; indicações sobre isso oferece [Implementar uploads de ficheiros em PHP em segurança](https://phpsos.de/pt/ratgeber/datei-upload-sicher/).

## O que uma atualização do Moodle consegue e o que não consegue

Uma atualização do Moodle corrige falhas no Moodle e permite muitas vezes versões mais recentes do PHP. Não aplica patch ao PHP, não reinicia nem processos web nem de cron e não remove ficheiros alheios de `moodledata`, administradores adicionais nem plugins alterados. Também se, no período anterior ao patch, houve fuga de dados, é algo que uma atualização não responde.

O Moodle regista os inícios de sessão e as ações também em registos próprios, que os administradores consultam em Administração do site > Relatórios. Procure aí especificamente inícios de sessão invulgares de administradores, novas contas com funções globais e instalações de plugins desde 17/10/2026. Exporte estas entradas antes que limpezas automáticas apaguem dados mais antigos. Os relatórios complementam os registos do servidor web, mas não os substituem.

## Como ajuda concretamente a PHP SOS?

- Esclarecemos a responsabilidade pelo PHP e fazemos confirmar o estado do patch e o reinício de web e cron.
- Guardamos registos, base de dados e `moodledata` antes de qualquer alteração.
- Verificamos configuração, plugins, administradores, funções e uploads.
- Se pretender, acompanhamos a plataforma de forma permanente no [contrato de manutenção de segurança](https://phpsos.de/pt/leistungen/security-wartungsvertrag/), articulado com o ano letivo e os períodos de exames.


## Perguntas frequentes

**O Moodle é afetado pelo PHP2Shell?**  
O Moodle em si não tem uma nova vulnerabilidade, mas corre em PHP. Se o PHP do servidor não tiver patch, um atacante pode, segundo a equipa do PHP, executar código sem autenticação. Uma atualização do Moodle não altera isso.

**Onde vejo a versão do PHP no Moodle?**  
Em Administração do site > Servidor > Ambiente, o Moodle verifica a versão do PHP em relação aos seus requisitos. O Moodle não mostra se foi aplicado um backport; isso é confirmado pelo operador do servidor.

**Porque tem o moodledata de ficar fora do diretório web?**  
Aí ficam os ficheiros carregados, as entregas, as sessões e as caches. Se o diretório for acessível pela web, os conteúdos podem eventualmente ser obtidos diretamente. O Moodle exige, por isso, um local fora da raiz de documentos.

**Quem é responsável pela atualização do PHP nas escolas?**  
Varia: a entidade titular da escola, um organismo estadual, um centro de dados municipal ou um prestador de serviços. Esclareça a responsabilidade por escrito e faça-se confirmar o estado do patch e o reinício.

## Fontes

- [php.net: avisos de segurança](https://www.php.net/)
- [Moodle](https://moodle.org/)
- [BSI](https://www.bsi.bund.de/)
- [RGPD Art. 33](https://dsgvo-gesetz.de/art-33-dsgvo/)
