Il y a quelques semaines, notre équipe Threat Intelligence a découvert une vulnérabilité dans Accordéon, un plugin WordPress installé sur plus de 30 000 sites. Cette faille a permis à tout utilisateur authentifié disposant d’autorisations de niveau abonné et supérieur de pouvoir importer un nouvel accordéon et d’injecter du Javascript malveillant dans l’accordéon.

Nous avons initialement contacté le développeur du plugin le 10 mars 2020. Cependant, un canal de communication approprié n’a été établi que le 18 mars 2020. Un correctif a été publié seulement 3 heures après la divulgation complète.

Ceci est considéré comme un problème de sécurité de niveau moyen qui pourrait potentiellement conduire à ce que des attaquants prennent complètement le contrôle des sites WordPress. Nous recommandons fortement une mise à jour immédiate vers la dernière version disponible, 2.2.15.

Les clients Wordfence Premium ont reçu une nouvelle règle de pare-feu le 10 mars 2020 pour se protéger contre les exploits ciblant cette vulnérabilité. Les utilisateurs de Wordfence gratuits ont reçu cette règle après trente jours, le 9 avril 2020.

La description: Action AJAX non protégée pour les scripts intersites stockés / reflétés (XSS)
Plugin concerné: Accordéon
Plugin Slug: accordéons
Versions concernées:
ID CVE: Sera mis à jour une fois l’identifiant fourni.
Score CVSS: 5.4 (Moyen)
Vecteur CVSS: CVSS: 3.0 / AV: N / AC: L / PR: L / UI: R / S: C / C: L / I: L / A: N
Version entièrement corrigée: 2.2.9

Le plugin Accordion est un plugin relativement simple utilisé pour créer des pages de FAQ de style accordéon et des zones de base de connaissances sur les sites WordPress. Dans le cadre de la fonctionnalité du plug-in, les utilisateurs peuvent importer de nouveaux accordéons, afin que les accordéons puissent être exportés sur un site et migrés vers un autre ou même utilisés pour restaurer des sauvegardes d’accordéon.

Afin de fournir cette fonctionnalité, le plug-in enregistre une action AJAX qui est utilisée pour enregistrer l’importation d’un fichier JSON et son contenu en tant que nouvel accordéon.

add_action('wp_ajax_accordions_ajax_import_json', 'accordions_ajax_import_json');
//add_action('wp_ajax_nopriv_accordions_ajax_import_json', 'accordions_ajax_import_json');

Cette action est liée à la fonction accordions_ajax_import_json où les données du fichier JSON sont extraites, analysées et utilisées pour créer une nouvelle publication avec le post_type défini sur “accordéons”.

function accordions_ajax_import_json(){

	$response = array();
	$json_file = isset($_POST['json_file']) ? $_POST['json_file'] : '';
	$string = file_get_contents($json_file);
	$json_a = json_decode($string,true);


	foreach ($json_a as $post_id=>$post_data){

	    $meta_fields = $post_data['meta_fields'];
		$title = $post_data['title'];

		// Create post object
		$my_post = array(
			'post_title'    => $title,
			'post_type' => 'accordions',
			'post_status'   => 'publish',

		);

		$post_inserted_id = wp_insert_post( $my_post );

		foreach ($meta_fields as $meta_key=>$meta_value){
			update_post_meta( $post_inserted_id, $meta_key, $meta_value );
        }




    }


	$response['json_a'] = $json_a;
	//$response['string'] = $string;
	//$response['json_file'] = $json_file;




	echo json_encode( $response );



	die();
}

En raison du manque de vérification des capacités et de la capacité inhérente de tout utilisateur connecté à un site WordPress à exécuter des actions AJAX, cela signifiait que tout utilisateur authentifié, y compris ceux avec des autorisations minimales, pouvait importer un nouvel accordéon à partir d’un fichier JSON hébergé à distance. De plus, du Javascript malveillant pourrait être inclus dans l’accordéon importé, permettant à un attaquant d’injecter du code malveillant qui s’exécuterait si un administrateur accédait à l’accordéon importé depuis le tableau de bord administratif WordPress. Ceci est considéré comme une vulnérabilité de script intersite stocké.

Alternativement, un attaquant pourrait exploiter cette faiblesse en incitant un propriétaire de site à cliquer sur un lien conçu pour importer un fichier JSON spécialement conçu contenant du Javascript malveillant.
Comme le montre le accordions_ajax_import_json , le contenu du fichier JSON est décodé au début de l’importation puis répercuté à la fin d’une importation réussie, ce qui fait exécuter tout Javascript malveillant contenu dans le fichier dans le navigateur de la victime. Ceci est considéré comme une vulnérabilité Reflected Cross-Site Scripting.

Si un attaquant réussissait à inciter un administrateur à accéder à son accordéon téléchargé par malveillance ou à cliquer sur un lien spécialement conçu, il pouvait obtenir un compte d’utilisateur administratif, rediriger le propriétaire du site vers un site malveillant ou voler des cookies de session pour s’authentifier sur le site. au nom de l’administrateur. Cela signifie qu’un attaquant pourrait complètement prendre le contrôle d’un site vulnérable en exploitant ces failles XSS.

Cette fonction était également vulnérable à la contrefaçon de demande intersite (CSRF) en raison de l’absence d’un nonce WordPress et de la vérification correspondante.

Heureusement, dans les versions les plus à jour de ce plugin, un contrôle de nonce et de capacité est présent pour le accordions_ajax_import_json fonction comme indiqué ci-dessous:

function accordions_ajax_import_json(){

	$response = array();


    $nonce = isset($_POST['nonce']) ? sanitize_text_field($_POST['nonce']) : '';
    if(wp_verify_nonce( $nonce, 'accordions_nonce' )) {

        if(current_user_can( 'manage_options' )){

            $json_file = isset($_POST['json_file']) ? $_POST['json_file'] : '';
            $string = file_get_contents($json_file);
            $json_a = json_decode($string,true);

10 mars 2020 – Découverte initiale et analyse de vulnérabilité. La règle de pare-feu a été publiée pour les clients Wordfence Premium. Nous avons fait notre première tentative de contact avec l’équipe de développement de plugins.
18 mars 2020 – Un canal de communication approprié a été établi et tous les détails de la divulgation ont été envoyés. Le patch a été publié seulement 3 heures après sa divulgation.
9 avril 2020 – Les utilisateurs de Wordfence gratuits ont reçu la règle de pare-feu.

Dans l’article d’aujourd’hui, nous avons détaillé une faille liée à une action AJAX non protégée qui permettait d’importer des accordéons malveillants dans Accordion, un plugin WordPress. Cette faille a été entièrement corrigée dans la version 2.2.9. Nous recommandons aux utilisateurs de mettre à jour immédiatement la dernière version disponible. Sites en cours d’exécution Wordfence Premium sont protégés contre les attaques contre cette vulnérabilité depuis le 10 mars 2020. Les sites exécutant la version gratuite de Wordfence ont reçu cette mise à jour des règles de pare-feu le 9 avril 2020.


Source link