Un thème premium acheté sur une place de marché tierce arrive dans une archive ZIP, sans certification indépendante ni garantie que son code ait été relu par quelqu’un d’autre que son auteur. Avant de le déployer chez un client, une agence a besoin d’une méthode reproductible pour vérifier qu’aucun code dissimulé ne s’y cache — porte dérobée, appel vers un domaine inconnu, injection de liens publicitaires masqués. Cet article ne traite pas des extensions dites nulled, piratées et déjà couvertes ailleurs : il porte sur des thèmes achetés légitimement mais dont le contenu n’a jamais été audité.
Étape 1 : rechercher les motifs textuels suspects
Une première passe, rapide, consiste à parcourir l’ensemble des fichiers PHP du thème à la recherche de fonctions souvent utilisées pour dissimuler du code :
grep -rn "base64_decode\|eval(\|gzinflate\|str_rot13\|create_function" ./mon-theme/
La présence de base64_decode ou eval() n’est pas systématiquement malveillante — certains plugins légitimes de mise en cache les utilisent — mais chaque occurrence mérite d’être ouverte et comprise avant d’aller plus loin. Un code encodé en base64 immédiatement suivi d’un eval() constitue un signal d’alerte fort, presque toujours révélateur d’une intention de dissimulation.
Étape 2 : chercher les appels réseau sortants

Un thème n’a en général aucune raison légitime de contacter un domaine externe autre que celui de son propre service de mise à jour ou d’une bibliothèque de polices connue. Une recherche ciblée sur les fonctions réseau permet de lister les destinations contactées :
grep -rn "wp_remote_get\|wp_remote_post\|curl_init\|file_get_contents(\s*['\"]http" ./mon-theme/
Chaque domaine trouvé doit être identifié et justifié. Un appel vers une adresse IP brute, un nom de domaine récemment enregistré ou une chaîne construite dynamiquement à partir de fragments concaténés mérite un examen approfondi, car cette pratique sert souvent à échapper à une recherche textuelle simple.
Étape 3 : comparer avec une version de référence
Lorsque le thème existe en version gratuite ou que l’éditeur publie ses fichiers sur un dépôt public, une comparaison directe des fichiers communs permet de repérer rapidement les ajouts propres à la version achetée :
diff -rq ./mon-theme-gratuit/ ./mon-theme-premium/
Les fichiers signalés comme différents concentrent l’attention : ce sont eux qui méritent une lecture ligne à ligne plutôt qu’une simple recherche de motifs.
Étape 4 : observer le comportement en environnement isolé
Une installation du thème dans un environnement jetable, sans connexion à des données réelles, permet d’observer son comportement réseau en conditions d’exécution. Un outil de capture de trafic local, ou simplement le journal des connexions sortantes du serveur, révèle les appels effectués au chargement d’une page, y compris ceux qui n’apparaissaient pas clairement dans une lecture statique du code, par exemple une requête déclenchée uniquement après un délai ou une condition précise.
Étape 5 : vérifier les hooks d’activation
Les fonctions liées à register_activation_hook ou aux actions after_switch_theme et init méritent une attention particulière : c’est souvent à ces moments qu’un code malveillant crée un compte administrateur caché, planifie une tâche cron persistante ou modifie discrètement un fichier de configuration.
grep -rn "after_switch_theme\|wp_create_user\|wp_insert_user\|wp_schedule_event" ./mon-theme/
La checklist complète avant déploiement
- Recherche textuelle des fonctions d’encodage et d’exécution dynamique.
- Recherche des appels réseau sortants et identification de chaque domaine contacté.
- Comparaison avec une version de référence si elle existe.
- Installation isolée avec capture du trafic réseau réel.
- Vérification des hooks d’activation et des actions liées à la création de comptes.
- Passage d’un scanner de malware serveur en complément, jamais en remplacement des étapes précédentes.
En résumé
Aucune de ces vérifications n’est infaillible prise isolément, mais leur combinaison réduit fortement le risque de déployer, sans le savoir, un thème porteur d’un code dissimulé. Le temps investi dans cette revue avant la première installation client coûte largement moins cher qu’un incident découvert après coup sur un site en production.