# Repérer du code caché dans un thème premium avant de le déployer

> Avant d'installer un thème acheté sur une place de marché tierce chez un client, une agence a besoin d'une méthode fiable pour vérifier qu'aucun code dissimulé ne s'y cache.

- Auteur : Clément Hadrot
- Publié le : 2025-12-09
- Mis à jour le : 2025-12-09
- Catégorie : Sécurité
- URL : https://wpmoderne.dev.wordpress-developpement.fr/securite/reperer-code-cache-theme-premium-avant-deploiement/

## L’essentiel

- Le code encodé en base64 ou obfusqué doit systématiquement alerter
- Les appels réseau vers des domaines inconnus se repèrent par une recherche ciblée
- Un environnement isolé permet d'observer le comportement réel du thème

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

> L'essentiel à retenir : Le code encodé en base64 ou obfusqué doit systématiquement alerter ; Les appels réseau vers des domaines inconnus se repèrent par une recherche ciblée ; Un environnement isolé permet d'observer le comportement réel du thème

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

1. Recherche textuelle des fonctions d'encodage et d'exécution dynamique.
2. Recherche des appels réseau sortants et identification de chaque domaine contacté.
3. Comparaison avec une version de référence si elle existe.
4. Installation isolée avec capture du trafic réseau réel.
5. Vérification des hooks d'activation et des actions liées à la création de comptes.
6. 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.
