Carnet Wiki

ConseilsSecurite

Cette page vise à recueillir et présenter les recommandations en matière d’injection de code dans SPIP.

Après la vague de piratages de mai 2023

Cf https://discuter.spip.net/t/fichiers-etranges-normal-ou-piratage/169909/10

-  spip_loader retire les anciennes versions des fichiers SPIP qui ne sont plus utilisées, mais ne s’occupe pas des fichiers qui n’ont jamais été SPIP. Et donc il ne retire pas des fichiers qui auraient été abusivement injectés sur le site.

(Nicod:) « Ça demande du temps à mettre en place et tester, et des compétences, et
un hébergement qui le permet, mais sur des sites sensibles, je règle les droits d’écriture de façon un peu stricte :
-  Apache n’a les droits d’écriture que sur /IMG, /local, /tmp et /config/fichiers, et pas plus (même pas /config pour les clés une fois qu’elles sont générées).
-  de plus, un .htaccess interdit l’exécution de tout fichier php dans ces répertoires là.
-  La mise à jour de SPIP et des plugins est faite uniquement par git, ce qui me permet de faire un git status pour vérifier si rien n’a été modifié. »

En cas de piratage
On peut essayer de repérer tous les fichiers ajoutés ou modifiés mais c’est fastidieux, les divers fichiers injectés peuvent changer de nom, et parfois ils font preuve de mimétisme environnemental puisque leur date est modifiée pour devenir la même que celle des fichiers légitimes.
b_b indique que le mieux c’est « un peu comme quand on fait une mise à jour majeure (cf Changer la version majeure de SPIP :
-  virer tous les dossiers de la dist (ecrire, prive, plugins-dist, etc),
-  ne garder que les dossiers qui contiennent des données perso (IMG, conf, plugins),
-  analyser ces dossier pour vérifier qu’ils sont safe,
-  relancer une install pour rétablir les dossiers et fichiers de la dist. »

Protegez vos INCLURE

Dans le cas où le squelette inclus contient la balise #SELF ou #PAGINATION
et uniquement dans ce cas là, il est nécessaire de protéger self
dans l’appel à l’inclure, donc de mettre un argument du type {self=#SELF} dans la balise INCLURE.

Exemple :
<INCLURE{fond=inc-petition}{id_article}{self=#SELF}>

Notes :
-  ainsi on fonde l’url de cache du fragment inclu sur l’url de la page appelante
-  #PAGINATION en interne fait appel à #SELF

- Mise à jour :15 September 2025 at 20:28