# Sécurité Craft CMS après PHP2Shell : sécuriser les sites d'agence

> Sécuriser Craft CMS après PHP2Shell : vérifier PHP dans le rapport système, protéger .env et la clé de sécurité, désactiver devMode, comparer la config.

Source : https://phpsos.de/fr/plattformen/craft-cms/  
État : 25/10/2026  
Fournisseur : PHP SOS, Assistance d'urgence PHP et sécurité des serveurs. Aide immédiate par WhatsApp : https://wa.me/491736494914?text=Bonjour%20PHP%20SOS%2C%20nous%20avons%20besoin%20d%27aide%20avec%20notre%20serveur%20PHP.%20Entreprise%20%3A%20%E2%80%A6%20Site%20web%20%3A%20%E2%80%A6

**En bref :** après PHP2Shell, la sécurité de Craft CMS dépend du PHP du serveur, pas de Craft. Les agences avec de nombreux sites Craft devraient surtout contrôler chaque serveur individuellement dès maintenant. Après le correctif et le redémarrage, `.env`, la clé de sécurité, `devMode`, la racine web et la comparaison de la Project Config doivent être contrôlés.

## Ce que PHP2Shell signifie pour les sites Craft

Craft CMS est apprécié des agences parce qu'il offre des modèles de contenu flexibles et des templates propres. De nombreuses agences suivent donc des dizaines de sites Craft sur différents serveurs et offres d'hébergement. Les failles PHP CVE-2026-109618 et CVE-2026-109619 permettent, selon l'équipe PHP, d'exécuter du code malveillant à distance sans authentification, quelle que soit la version de Craft.

Pour les agences, la question la plus importante est donc organisationnelle : quel site tourne où, avec quel PHP, et qui est responsable de la mise à jour ? Une liste de toutes les installations avec hébergeur, état de PHP et interlocuteur est la première étape. La manière dont nous soutenons les agences est décrite dans [Partenaire de sécurité pour les agences](https://phpsos.de/fr/branchen/agenturen-white-label/).

## Sécurité Craft CMS : vérifier la version de PHP

Dans le Control Panel, **Utilitaires > Rapport système** affiche la version de PHP, la base de données et les plugins installés. C'est la version avec laquelle le site fonctionne sur le web. La console Craft `php craft`, le traitement de la file d'attente et les tâches cron utilisent en revanche le PHP en ligne de commande. Les deux doivent être corrigés.

Les versions corrigées en amont sont 8.5.12, 8.4.27, 8.3.36 et 8.2.35. De nombreux hébergeurs appliquent les correctifs sous forme de backport ; le numéro reste alors identique. Les versions concernées sont indiquées dans [Quelles versions de PHP sont concernées ?](https://phpsos.de/fr/php2shell/betroffene-php-versionen/). Les versions de PHP prises en charge par votre version de Craft se vérifient dans la configuration requise de la documentation sur craftcms.com.

Craft traite les tâches d'arrière-plan dans une file d'attente. Si elle tourne comme processus permanent sous un gestionnaire de processus, celui-ci doit aussi être redémarré après la mise à jour de PHP.

## Dossiers et configuration dans Craft

| Emplacement | Contenu | Point de contrôle |
|---|---|---|
| `.env` | Accès à la base de données, `CRAFT_SECURITY_KEY`, autres clés | renouveler les valeurs en cas de soupçon |
| `config/general.php` | `devMode`, `allowAdminChanges`, chemin du Control Panel | code PHP inséré |
| `config/project/` | Project Config en YAML | comparaison avec Git |
| `web/` | Racine web avec `index.php`, `cpresources/`, souvent les uploads | fichiers PHP supplémentaires |
| `storage/` | Journaux, fichiers d'exécution, souvent sauvegardes de la base de données | non accessible via le web |
| `templates/` | Templates Twig | JavaScript étranger |
| `modules/`, `vendor/` | modules propres et plugins | fichiers modifiés, `composer audit` |

Un point souvent négligé est `storage/backups/`. Craft y dépose des sauvegardes de la base de données qui peuvent contenir l'intégralité des données clients et de formulaires. Ce dossier ne doit jamais se trouver sous la racine web.

Contrôles sans danger en ligne de commande :

```bash
# Afficher les différences entre la Project Config et la base de données
php craft project-config/diff
# Fichiers PHP dans la racine web, hors index.php
find web -type f -name "*.php" ! -name "index.php"
composer audit
```

> **Important:**
> En production, `devMode` doit être sur `false`. Avec `devMode` activé, Craft affiche des messages d'erreur détaillés avec chemins et extraits de code, qui facilitent le travail des attaquants.

## Control Panel, utilisateurs et plugins

Le Control Panel se trouve par défaut sous `/admin`. Vérifiez quels utilisateurs ont des droits d'administrateur et supprimez les accès d'anciens collaborateurs et d'indépendants. Craft prend en charge l'authentification à deux facteurs ; utilisez-la pour tous les comptes à droits élevés.

Mettez `allowAdminChanges` sur `false` en production. Champs, sections et réglages de plugins ne peuvent alors être modifiés que via la Project Config versionnée, et tout écart se remarque lors de la comparaison avec Git. Les plugins du Plugin Store apportent leur propre code PHP ; vérifiez s'ils sont tous encore maintenus et compatibles avec la version de PHP visée.

```php
// config/general.php, extrait pour l'environnement de production
'devMode' => false,
'allowAdminChanges' => false,
```

## Ce qu'une mise à jour de Craft peut faire et ne peut pas faire

Une mise à jour de Craft ou d'un plugin comble des défauts de ce code et peut permettre d'utiliser des versions de PHP plus récentes. Elle ne corrige pas PHP, ne redémarre ni PHP-FPM ni la file d'attente, ne renouvelle pas une clé de sécurité qui a fuité et ne supprime aucun fichier étranger de `web/` ou de `storage/`.

Pour les agences avec de nombreuses installations Craft, ce qui compte surtout après le correctif, c'est la reproductibilité. Consignez pour chaque site quelle version de PHP fonctionne sur le web et en ligne de commande, quand le redémarrage a été confirmé et si les contrôles ont révélé des anomalies. Cet aperçu aide lors des questions des clients et pour de futures alertes. Pensez aussi aux environnements de staging et de développement accessibles publiquement. Ils tournent souvent avec `devMode`, des versions plus anciennes et de vraies données clients, et sont volontiers oubliés lors des mises à jour. En cas de doute sur le fait qu'un site client soit concerné, informez le client de façon factuelle plutôt que d'attendre.

## Comment PHP SOS aide-t-il concrètement ?

- Nous recensons avec vous toutes les installations Craft avec hébergeur, état de PHP et responsabilité.
- Nous faisons confirmer le correctif et le redémarrage pour chaque serveur et sauvegardons les journaux à partir du 20/10/2026.
- Nous contrôlons la racine web, `storage`, la configuration, les utilisateurs et la comparaison de la Project Config.
- Sur demande, nous assurons le suivi de sécurité continu de vos sites clients dans le [contrat de maintenance de sécurité](https://phpsos.de/fr/leistungen/security-wartungsvertrag/), aussi sous votre nom.


## Questions fréquentes

**Craft CMS est-il concerné par PHP2Shell ?**  
Craft CMS lui-même n'a pas de nouvelle faille. Mais il fonctionne sur PHP, et PHP2Shell se trouve dans PHP. Toute installation de Craft sur un serveur non corrigé est donc potentiellement vulnérable, quelle que soit la version de Craft.

**Où Craft affiche-t-il la version de PHP ?**  
Dans le Control Panel, sous Utilitaires > Rapport système. On y trouve la version de PHP, la base de données et les plugins installés. Un backport appliqué ne se reconnaît pas au numéro ; votre hébergeur le confirme.

**Qu'est-ce que la clé de sécurité dans Craft et pourquoi la renouveler ?**  
La clé de sécurité du fichier .env sert à signer et à chiffrer des données. Qui la connaît peut, dans certaines circonstances, falsifier des sessions ou des données de formulaires. En cas de soupçon, vous devriez la renouveler en concertation avec votre agence.

**À quoi sert allowAdminChanges sur false ?**  
Ainsi, champs, sections et réglages de plugins ne peuvent plus être modifiés en production via le Control Panel. Les modifications ne passent plus que par la Project Config versionnée, ce qui rend les manipulations plus difficiles et plus visibles.

## Sources

- [php.net : avis de sécurité](https://www.php.net/)
- [Craft CMS](https://craftcms.com/)
- [OWASP Cheat Sheets](https://cheatsheetseries.owasp.org/)
- [Versions de PHP prises en charge](https://www.php.net/supported-versions.php)
