Le 8 avril 2021, l’équipe de Wordfence Threat Intelligence a lancé le processus de divulgation responsable de plusieurs vulnérabilités découvertes dans Redirections 301 simples par BetterLinks, un plugin WordPress installé sur plus de 300 000 sites. L’une de ces failles permettait aux utilisateurs non authentifiés de mettre à jour les redirections du site permettant à un attaquant de rediriger tout le trafic du site vers un site malveillant externe. De plus, il restait plusieurs failles qui permettaient aux utilisateurs authentifiés d’effectuer des actions telles que l’installation et l’activation de plugins, en plus des actions moins critiques.

Nous avons d’abord contacté le développeur du plugin le 8 avril 2021. Après avoir établi un canal de communication approprié, nous avons fourni tous les détails de la divulgation le 11 avril 2021. Un correctif initial a été publié le 15 avril 2021 et une version entièrement corrigée de le plugin est sorti le 5 mai 2021 en version 2.0.4.

Certaines de ces vulnérabilités sont considérées comme critiques. Par conséquent, nous vous recommandons vivement de mettre à jour immédiatement vers la dernière version corrigée disponible, 2.0.4.

Les utilisateurs de Wordfence Premium ont reçu une règle de pare-feu pour se protéger contre tout exploit visant ces vulnérabilités le 8 avril 2021. Les sites utilisant toujours la version gratuite de Wordfence ont reçu la même protection le 8 mai 2021.


La description: Importation / exportation de redirection non authentifiée (autorisant la redirection totale du site)
Plugin concerné: Redirections 301 simples par BetterLinks
Plugin Slug: redirections simples 301
Versions affectées: 2.0.0 – 2.0.3
ID CVE: En attente.
Score CVSS: 9,9 (CRITIQUE)
Vecteur CVSS: CVSS: 3.1 / AV: N / AC: L / PR: N / UI: N / S: C / C: L / I: L / A: H
Des chercheurs: Chloé Chamberland
Version entièrement corrigée: 2.0.4

Simple 301 Redirects de BetterLinks est un plugin simple conçu pour créer des redirections 301 sur les sites WordPress. Dans la version 2.0.0 du plugin, ils ont introduit plusieurs nouvelles fonctionnalités et apporté des améliorations supplémentaires. L’une des fonctionnalités qu’ils ont introduites dans la mise à jour était la possibilité d’importer et d’exporter des redirections. Malheureusement, cette fonctionnalité n’a pas été mise en œuvre de manière sécurisée.

Le développeur a enregistré deux admin_init action s’accroche aux fonctions suivantes: import_data et export_data. Aucune des fonctions correspondantes n’avait de contrôle de capacité ou de contrôle nonce permettant aux utilisateurs sans l’autorisation appropriée de déclencher l’exécution des fonctions.

 class Tools { 
    public function __construct()
    {
        add_action('admin_init', [$this, 'export_data']);
        add_action('admin_init', [$this, 'import_data']);
        add_action('wp_ajax_simple301redirects/admin/get_import_info', [$this, 'get_import_info']);
    }

Le crochet utilisé était un admin_init action, qui permettait à tout utilisateur, quelle que soit son authentification, de déclencher les fonctions. Ceci est dû au fait admin_init les hooks d’action peuvent être initialisés via le /wp-admin/admin-post.php point final. Ce point de terminaison est accessible aux utilisateurs authentifiés et non authentifiés.

le export_data peut être utilisée pour exporter des redirections, ce qui pourrait potentiellement révéler des informations sensibles, cependant, l’exploitation de cette fonction ne serait pas aussi grave que la vulnérabilité au sein du import_data une fonction. le import_data La fonction prend le contenu du fichier fourni par un utilisateur, puis utilise le contenu du fichier pour importer une liste de redirections.

     public function import_data()
	{
		$page = isset($_GET['page']) ? $_GET['page'] : '';
		$import = isset($_GET['import']) ? $_GET['import'] : false;
		if ($page === '301options' && $import == true) {
			if (!empty($_FILES['upload_file']['tmp_name'])) {
				$fileContent = json_decode(file_get_contents($_FILES['upload_file']['tmp_name']), true);
                if (!empty($fileContent)) {
                    $results = $this->process_data($fileContent);
                    $_SESSION['simple_301_redirects_import_info'] = json_encode($results);
                } 
			}
		}
    }

Un attaquant pourrait utiliser cela pour définir des redirections qui refuseraient l’accès à un site WordPress vulnérable, entraînant une perte de disponibilité, et / ou rediriger les visiteurs du site vers des sites malveillants afin d’infecter davantage les ordinateurs des victimes.


La description: Installation / activation de plugins arbitraires authentifiés
Plugin concerné: Redirections 301 simples par BetterLinks
Plugin Slug: redirections simples 301
Versions affectées: 2.0.0 – 2.0.3
ID CVE: En attente.
Score CVSS: 7,4 (HAUT)
Vecteur CVSS: CVSS: 3.1 / AV: N / AC: L / PR: L / UI: N / S: C / C: L / I: L / A: L
Des chercheurs: Chloé Chamberland
Version entièrement corrigée: 2.0.4

En plus de la fonctionnalité d’importation nouvellement implémentée, la version mise à jour du plugin a également implémenté une fonction pour installer d’autres plugins qu’ils ont développés, tels que BetterLinks, via une invite dans le wp-admin tableau de bord. Afin de fournir cette fonctionnalité, le plugin a enregistré l’action AJAX wp_ajax_simple301redirects/admin/install_plugin, qui était accroché à la install_plugin une fonction.

 add_action('wp_ajax_simple301redirects/admin/activate_plugin', [$this, 'activate_plugin']);

le install_plugin peut être utilisée pour installer n’importe quel plugin à partir du référentiel WordPress en fournissant le nom du plugin souhaité en tant que ‘slug‘paramètre. Cette fonction n’avait pas de vérification de capacité pour vérifier que l’action a été déclenchée par un utilisateur authentifié, bien qu’elle ait eu une vérification nonce.

     public function install_plugin()
    {
        check_ajax_referer('wp_rest', 'security');
        $slug = isset($_POST['slug']) ? $_POST['slug'] : '';
        $result = Simple301RedirectsHelper::install_plugin($slug);
        if (is_wp_error($result)) {
            wp_send_json_error($result->get_error_message());
        }
        wp_send_json_success(__('Plugin is installed successfully!', 'simple-301-redirects'));
        wp_die();
    }

Malheureusement, ce contrôle nonce a utilisé le wp_rest action de validation. En raison du fait qu’il s’agit effectivement d’un nonce REST-API, un utilisateur peut générer un nonce valide en utilisant le rest-nonce Action AJAX qui fait partie du cœur de WordPress et ouverte à tout utilisateur authentifié. Cela a permis à un utilisateur de passer la validation nonce et d’utiliser la fonction d’installation du plugin.

De plus, un utilisateur authentifié peut activer le plugin installé, ou tout autre plugin installé sur le site, en utilisant le wp_ajax_simple301redirects/admin/activate_plugin Point de terminaison AJAX connecté au activate_plugin une fonction.

    public function activate_plugin()
    {
        check_ajax_referer('wp_rest', 'security');
        $basename = isset($_POST['basename']) ? $_POST['basename'] : '';
        $result = activate_plugin($basename, '', false );
        if (is_wp_error($result)) {
            wp_send_json_error($result->get_error_message());
        }
        if ($result === false) {
            wp_send_json_error(__('Plugin couldn't be activated.', 'simple-301-redirects'));
        }
        wp_send_json_success(__('BetterLinks is activated!', 'simple-301-redirects'));
        wp_die();

Ces fonctions permettraient à un attaquant authentifié d’installer et d’activer n’importe quel plugin du référentiel WordPress, potentiellement un avec une vulnérabilité plus grave, qui pourrait être utilisé pour infecter davantage et augmenter les privilèges sur le site vulnérable.


La description: Activation et récupération authentifiées des caractères génériques
Plugin concerné: Redirections 301 simples par BetterLinks
Plugin Slug: redirections simples 301
Versions concernées: 2.0.0 – 2.0.3
ID CVE: En attente.
Score CVSS: 4,3 (MOYEN)
Vecteur CVSS: CVSS: 3.1 / AV: N / AC: L / PR: L / UI: N / S: U / C: N / I: L / A: N
Des chercheurs: Chloé Chamberland
Version entièrement corrigée: 2.0.4

En plus d’installer et d’activer des plugins, un utilisateur authentifié peut déclencher le wp_ajax_simple301redirects/admin/wildcard et wp_ajax_simple301redirects/admin/get_wildcard Actions AJAX qui pourraient être utilisées pour définir la valeur «générique», utilisée pour contrôler la manière dont les redirections sont appliquées de manière générale, à une valeur arbitraire, et récupérer la valeur actuelle du caractère générique.

Les fonctions correspondantes à ces crochets d’action, get_wildcard et wildcard, n’avait aucun contrôle de capacité et souffrait du même défaut nonce que l’installation arbitraire du plugin et l’activation des fonctions AJAX.

Calendrier de divulgation

8 avril 2021 – Conclusion de l’analyse du plugin qui a conduit à la découverte de plusieurs vulnérabilités dans le plugin Simple 301 Redirects by BetterLinks. Nous développons des règles de pare-feu pour protéger les clients de Wordfence et les diffusons aux utilisateurs de Wordfence Premium. Nous prenons contact avec le développeur du plugin.
11 avril 2021 – Le développeur du plugin confirme la boîte de réception pour gérer la discussion.
12 avril 2021 – Nous envoyons tous les détails de divulgation.
15 avril 2021 – Le développeur du plugin publie un premier ensemble de correctifs. Nous examinons les correctifs et déterminons qu’il manque encore une protection. Nous faisons un suivi avec le développeur pour l’informer de ce qui doit encore être corrigé.
18 avril 2021 – Un patch supplémentaire est publié.
19 avril 2021 – Nous analysons le correctif et déterminons qu’il manque encore une protection, nous faisons donc un suivi pour les informer de ce qui manque.
21 avril 2021 – Le développeur confirme qu’il travaillera sur les correctifs restants.
4 mai 2021 – Nous faisons un suivi pour vérifier l’état des correctifs, le développeur confirme qu’ils seront publiés prochainement.
5 mai 2021 – Une version récemment mise à jour de Simple 301 Redirects est publiée et contient suffisamment de correctifs.
8 mai 2021 – Les utilisateurs gratuits de Wordfence reçoivent des règles de pare-feu.

Conclusion

Dans l’article d’aujourd’hui, nous avons détaillé plusieurs failles dans Simple 301 Redirects by BetterLinks qui accordaient aux attaquants non authentifiés la possibilité de rediriger tous les visiteurs d’un site vers un site malveillant externe, en plus de permettre aux attaquants authentifiés d’installer et d’activer des plugins arbitraires. Ces failles ont été entièrement corrigées dans la version 2.0.4. Nous recommandons aux utilisateurs de mettre immédiatement à jour vers la dernière version disponible, qui est la version 2.0.4 au moment de cette publication.

Wordfence Premium les utilisateurs ont reçu une règle de pare-feu pour se protéger contre tout exploit visant ces vulnérabilités le 8 avril 2021. Les sites utilisant toujours la version gratuite de Wordfence ont reçu la même protection le 8 mai 2021.

Si vous connaissez un ami ou un collègue qui utilise ce plugin sur son site, nous vous recommandons vivement de lui transmettre cet avis pour aider à garder ses sites protégés car il s’agit de vulnérabilités graves qui peuvent conduire à une prise de contrôle complète du site.


Source link