WordPress — durcissement et gestion des CVE de plugins
Durcissement de WordPress et suivi des CVE de plugins et thèmes (cas LiteSpeed Cache CVE-2024-28000, CVE-2024-44000) : verrouillage de wp-config, désactivation de l'éditeur et audit wp-cli.
Durcissement d’une installation WordPress et processus de suivi des vulnérabilités de plugins, principal vecteur de compromission de la plateforme.
Menace
La majorité des compromissions WordPress proviennent de plugins vulnérables. CVE-2024-28000 (LiteSpeed Cache, CVSS 9.8, corrigé en 6.4) permettait une élévation de privilège non authentifiée jusqu’au niveau administrateur ; CVE-2024-44000 (corrigé après 6.4.1) autorisait la prise de contrôle de comptes via fuite des logs de débogage. Le durcissement réduit la surface et impose un suivi structuré des correctifs.
Détection
Inventaire des plugins, versions et statut de mise à jour via wp-cli :
wp plugin list --fields=name,status,version,update,update_version --format=table
wp plugin list --update=available --format=csv
wp theme list --update=available --format=csv
Recherche de fichiers de debug exposés (vecteur CVE-2024-44000) et de fichiers sensibles accessibles :
find /var/www/wp.exemple.fr -path '*/wp-content/debug.log' -o -name '.user.ini'
curl -s -o /dev/null -w '%{http_code}\n' https://wp.exemple.fr/wp-content/debug.log
Détection de fichiers PHP modifiés récemment dans uploads (souvent un webshell) :
find /var/www/wp.exemple.fr/wp-content/uploads -name '*.php' -type f
find /var/www/wp.exemple.fr -name '*.php' -mtime -3 -not -path '*/uploads/*'
Durcissement
Verrouillage de wp-config.php : désactivation de l’éditeur de fichiers, interdiction des modifications de fichiers depuis l’admin, forçage SSL admin :
define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', false);
define('FORCE_SSL_ADMIN', true);
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('AUTOMATIC_UPDATER_DISABLED', false);
define('WP_AUTO_UPDATE_CORE', 'minor');
Permissions de fichiers et protection de wp-config.php :
find /var/www/wp.exemple.fr -type d -exec chmod 750 {} \;
find /var/www/wp.exemple.fr -type f -exec chmod 640 {} \;
chmod 400 /var/www/wp.exemple.fr/wp-config.php
Blocage de l’exécution PHP dans uploads et protection des fichiers sensibles (Nginx) :
location ~* /wp-content/uploads/.*\.php$ { deny all; }
location = /wp-config.php { deny all; }
location ~* /(?:wp-config\.php|readme\.html|license\.txt|xmlrpc\.php)$ { deny all; }
location = /wp-login.php { limit_req zone=wplogin burst=5 nodelay; }
Mise à jour ciblée d’un plugin vulnérable et suppression des plugins/thèmes inactifs (surface morte) :
wp plugin update litespeed-cache --version=6.4
wp plugin delete $(wp plugin list --status=inactive --field=name)
wp theme delete $(wp theme list --status=inactive --field=name)
Vérification
Confirmation qu’aucune mise à jour de sécurité n’est en attente et que les fichiers sensibles sont protégés :
wp plugin list --update=available
curl -s -o /dev/null -w '%{http_code}\n' https://wp.exemple.fr/wp-config.php
curl -s -o /dev/null -w '%{http_code}\n' https://wp.exemple.fr/wp-content/uploads/test.php
Le code HTTP attendu pour les fichiers sensibles et l’exécution PHP dans uploads est 403. La vérification d’intégrité du cœur via wp core verify-checksums ne doit retourner aucune divergence :
wp core verify-checksums
wp plugin verify-checksums --all Vous avez un projet sur ces sujets ?
Nous contacter →