Une attaque massive de la chaîne d’approvisionnement a compromis 93 thèmes et plugins WordPress pour contenir une porte dérobée, donnant aux acteurs de la menace un accès complet aux sites Web.
Au total, les acteurs de la menace ont compromis 40 thèmes et 53 plugins appartenant à AccessPress, un développeur de modules complémentaires WordPress utilisés dans plus de 360 000 sites Web actifs.
L’attaque a été découverte par des chercheurs de Jetpack, les créateurs d’un outil de sécurité et d’optimisation pour les sites WordPress, qui ont découvert qu’une porte dérobée PHP avait été ajoutée aux thèmes et plugins.
Jetpack pense qu’un acteur de menace externe a piraté le site Web d’AccessPress pour compromettre le logiciel et infecter d’autres sites WordPress.
Une porte dérobée pour un contrôle total
Dès que les administrateurs ont installé un produit AccessPress compromis sur leur site, les acteurs ont ajouté un nouveau fichier “initial.php” dans le répertoire principal du thème et l’ont inclus dans le fichier principal “functions.php”.
Ce fichier contenait une charge utile encodée en base64 qui écrit un webshell dans le fichier « ./wp-includes/vars.php ».
Charge utile encodée écrivant le webshellSource : Sucuri
Le code malveillant a terminé l’installation de la porte dérobée en décodant la charge utile et en l’injectant dans le fichier “vars.php”, donnant essentiellement aux acteurs de la menace le contrôle à distance du site infecté.
La seule façon de détecter cette menace est d’utiliser une solution de surveillance de l’intégrité des fichiers de base, car le logiciel malveillant supprime le compte-gouttes de fichiers “initial.php” pour couvrir ses traces.
Selon Sucuri chercheurs qui ont enquêté sur l’affaire pour comprendre l’objectif des acteurs, les acteurs de la menace ont utilisé la porte dérobée pour rediriger les visiteurs vers des sites de largage de logiciels malveillants et d’arnaques. Par conséquent, la campagne n’était pas très sophistiquée.
Il est également possible que l’acteur ait utilisé ce malware pour vendre l’accès à des sites Web dérobés sur le dark web, ce qui serait un moyen efficace de monétiser une telle infection à grande échelle.
Suis-je concerné ?
Si vous avez installé l’un des plugins ou thèmes compromis sur votre site, les supprimer/remplacer/mettre à jour ne déracinera pas les webshells qui auraient pu y être plantés.
À ce titre, il est conseillé aux administrateurs de sites Web d’analyser leurs sites à la recherche de signes de compromission en procédant comme suit :
- Vérifiez votre fichier wp-includes/vars.php autour des lignes 146-158. Si vous voyez une fonction “wp_is_mobile_fix” avec du code obscurci, vous avez été compromis.
- Interrogez votre système de fichiers pour “wp_is_mobile_fix” ou “wp-theme-connect” pour voir s’il y a des fichiers affectés
- Remplacez vos fichiers WordPress principaux par de nouvelles copies.
- Mettez à niveau les plugins concernés et passez à un thème différent.
- Modifiez les mots de passe wp-admin et de base de données.
Jetpack a fourni la règle YARA suivante qui peut être utilisée pour vérifier si un site a été infecté et détecter à la fois le dropper et le webshell installé.
rule accesspress_backdoor_infection
{
strings:
// IoC's for the dropper
$inject0 = "$fc = str_replace('function wp_is_mobile()',"
$inject1 = "$b64($b) . 'function wp_is_mobile()',"
$inject2 = "$fc);"
$inject3 = "@file_put_contents($f, $fc);"
// IoC's for the dumped payload
$payload0 = "function wp_is_mobile_fix()"
$payload1 = "$is_wp_mobile = ($_SERVER['HTTP_USER_AGENT'] == 'wp_is_mobile');"
$payload2 = "$g = $_COOKIE;"
$payload3 = "(count($g) == 8 & $is_wp_mobile) ?"
$url0 = /https?:\/\/(www\.)?wp\-theme\-connect\.com(\/images\/wp\-theme\.jpg)?/
condition:
all of ( $inject* )
or all of ( $payload* )
or $url0
}
Portes dérobées détectées en septembre
Jetpack a détecté la porte dérobée pour la première fois en septembre 2021, et peu de temps après, les chercheurs ont découvert que les acteurs de la menace avaient compromis tous les plugins et thèmes gratuits appartenant au fournisseur.
Jetpack pense que les modules complémentaires AccessPress payants ont probablement été compromis mais ne les ont pas testés, cela ne peut donc pas être confirmé.
La plupart des produits avaient probablement été compromis début septembre à cause des horodatages.
Le 15 octobre 2021, le fournisseur a supprimé les extensions du portail de téléchargement officiel jusqu’à ce que le point de compromis soit localisé et corrigé.
Le 17 janvier 2022, AccessPress a publié de nouvelles versions « nettoyées » pour tous les plugins concernés.
Cependant, les thèmes concernés n’ont pas encore été nettoyés, donc la migration vers un thème différent est le seul moyen d’atténuer les risques de sécurité.
Les utilisateurs des plugins et thèmes AccessPress peuvent lire Message de Jetpack pour une liste complète des produits fixes.
BleepingComputer a tenté de contacter AccessPress à propos de la compromission, mais le formulaire de contact ne fonctionne pas.