# Segurança Craft CMS após o PHP2Shell: proteger os sites de agências

> Proteger o Craft CMS após o PHP2Shell: verificar o PHP no relatório do sistema, proteger .env e security key, desativar devMode e comparar a Project Config.

Fonte: https://phpsos.de/pt/plattformen/craft-cms/  
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 Craft CMS depende do PHP do servidor, não do Craft. Sobretudo as agências com muitos sites Craft devem verificar agora cada servidor individualmente. Depois do patch e do reinício, devem ser verificados `.env`, a security key, o `devMode`, a raiz de documentos e a comparação da Project Config.

## O que o PHP2Shell significa para os sites Craft

O Craft CMS é popular entre as agências porque oferece modelos de conteúdo flexíveis e templates limpos. Por isso, muitas agências mantêm dezenas de sites Craft em servidores e pacotes de alojamento diferentes. Segundo a equipa do PHP, as vulnerabilidades PHP CVE-2026-109618 e CVE-2026-109619 permitem executar código malicioso remotamente sem autenticação, independentemente da versão do Craft.

Para as agências, a questão mais importante é, por isso, organizativa: que site corre onde, com que PHP, e quem é responsável pela atualização? Uma lista de todas as instalações com fornecedor de alojamento, estado do PHP e interlocutor é o primeiro passo. Como apoiamos as agências nisso, descreve-o [Parceiro de segurança para agências](https://phpsos.de/pt/branchen/agenturen-white-label/).

## Segurança do Craft CMS: verificar a versão do PHP

No Control Panel, **Ferramentas > Relatório do sistema** mostra a versão do PHP, a base de dados e os plugins instalados. Essa é a versão com que o site corre na web. A consola do Craft `php craft`, o processamento da fila e as tarefas cron usam, em contrapartida, o PHP da linha de comandos. Ambos têm 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. Muitos fornecedores de alojamento incorporam as correções como backport; o número mantém-se então igual. Que versões estão afetadas, mostra-o [Que versões do PHP estão afetadas?](https://phpsos.de/pt/php2shell/betroffene-php-versionen/). Quais as versões do PHP que a sua versão do Craft suporta, verifique-o nos requisitos de sistema da documentação em craftcms.com.

O Craft processa as tarefas em segundo plano numa fila. Se esta correr como processo permanente sob um gestor de processos, este também tem de ser reiniciado após a atualização do PHP.

## Pastas e configuração no Craft

| Local | Conteúdo | Ponto de verificação |
|---|---|---|
| `.env` | Acesso à base de dados, `CRAFT_SECURITY_KEY`, outras chaves | Renovar valores em caso de suspeita |
| `config/general.php` | `devMode`, `allowAdminChanges`, caminho para o Control Panel | Código PHP inserido |
| `config/project/` | Project Config em YAML | Comparação com o Git |
| `web/` | Raiz de documentos com `index.php`, `cpresources/`, muitas vezes uploads | Ficheiros PHP adicionais |
| `storage/` | Registos, ficheiros de execução, muitas vezes cópias de segurança da base de dados | Não acessível pela web |
| `templates/` | Templates Twig | JavaScript alheio |
| `modules/`, `vendor/` | Módulos e plugins próprios | Ficheiros alterados, `composer audit` |

Um ponto muitas vezes ignorado é `storage/backups/`. O Craft guarda aí cópias de segurança da base de dados, que podem conter dados completos de clientes e de formulários. Esta pasta nunca pode ficar abaixo da raiz de documentos.

Verificações inofensivas na linha de comandos:

```bash
# Mostrar as diferenças entre a Project Config e a base de dados
php craft project-config/diff
# Ficheiros PHP na raiz de documentos, exceto index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
```

> **Importante:**
> Em produção, o `devMode` deve estar em `false`. Com o `devMode` ligado, o Craft mostra mensagens de erro detalhadas com caminhos e excertos de código, que facilitam o trabalho aos atacantes.

## Control Panel, utilizadores e plugins

O Control Panel fica, por predefinição, em `/admin`. Verifique que utilizadores têm direitos de administrador e remova os acessos de antigos colaboradores e freelancers. O Craft suporta autenticação de dois fatores; use-a para todas as contas com direitos elevados.

Defina em produção o `allowAdminChanges` como `false`. Assim, campos, secções e definições de plugins só podem ser alterados através da Project Config sob controlo de versões, e qualquer desvio salta à vista na comparação com o Git. Os plugins da Plugin Store trazem código PHP próprio; verifique se todos ainda são mantidos e compatíveis com a versão do PHP pretendida.

```php
// config/general.php, excerto para o ambiente de produção
'devMode' => false,
'allowAdminChanges' => false,
```

## O que uma atualização do Craft consegue e o que não consegue

Uma atualização do Craft ou de um plugin corrige falhas nesse código e pode permitir versões mais recentes do PHP. Não aplica patch ao PHP, não reinicia nem o PHP-FPM nem a fila, não renova uma security key exposta e não remove ficheiros alheios de `web/` ou `storage/`.

Para agências com muitas instalações Craft, o que conta depois do patch é sobretudo a repetibilidade. Registe, por site, que versão do PHP corre na web e na linha de comandos, quando foi confirmado o reinício e se as verificações revelaram anomalias. Esta síntese ajuda nas perguntas dos clientes e em futuros alertas. Pense também nos ambientes de staging e de desenvolvimento acessíveis publicamente. Correm muitas vezes com `devMode`, versões mais antigas e dados reais de clientes e são facilmente esquecidos nas atualizações. Se houver dúvidas sobre se o site de um cliente está afetado, informe o cliente com objetividade, em vez de esperar.

## Como ajuda concretamente a PHP SOS?

- Registamos consigo todas as instalações Craft com fornecedor de alojamento, estado do PHP e responsabilidade.
- Fazemos confirmar o patch e o reinício por servidor e guardamos registos a partir de 20/10/2026.
- Verificamos a raiz de documentos, `storage`, a configuração, os utilizadores e a comparação da Project Config.
- Se pretender, assumimos a manutenção de segurança contínua dos sites dos seus clientes no [contrato de manutenção de segurança](https://phpsos.de/pt/leistungen/security-wartungsvertrag/), também em seu nome.


## Perguntas frequentes

**O Craft CMS é afetado pelo PHP2Shell?**  
O Craft CMS em si não tem uma nova vulnerabilidade. Mas corre em PHP, e o PHP2Shell está no PHP. Qualquer instalação Craft num servidor sem patch é, por isso, potencialmente vulnerável, independentemente da versão do Craft.

**Onde mostra o Craft a versão do PHP?**  
No Control Panel, em Ferramentas > Relatório do sistema. Aí constam a versão do PHP, a base de dados e os plugins instalados. Um backport aplicado não se reconhece pelo número; isso é confirmado pelo seu fornecedor de alojamento.

**O que é a security key no Craft e porque a renovar?**  
A security key do ficheiro .env serve para assinar e encriptar dados. Quem a conhece pode, em certas circunstâncias, falsificar sessões ou dados de formulários. Perante uma suspeita, deve renová-la em articulação com a sua agência.

**Que vantagem tem allowAdminChanges em false?**  
Assim, campos, secções e definições de plugins deixam de poder ser alterados em produção através do Control Panel. As alterações passam a vir apenas da Project Config sob controlo de versões, o que torna as manipulações mais difíceis e mais visíveis.

## Fontes

- [php.net: avisos de segurança](https://www.php.net/)
- [Craft CMS](https://craftcms.com/)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
- [Versões do PHP suportadas](https://www.php.net/supported-versions.php)
