Il y a quelques semaines, nous avons révélé plusieurs failles corrigées dans le Tableau de prix par plugin Supsystic. Le 20 janvier, notre équipe Threat Intelligence a découvert plusieurs vulnérabilités similaires présentes dans un autre produit de Supsystic: Générateur de tableaux de données par Supsystic, un plugin WordPress installé sur plus de 30 000 sites. Ces failles étaient très similaires et ont permis à un attaquant d’exécuter plusieurs actions AJAX, d’injecter du Javascript malveillant et de forger des requêtes au nom d’un utilisateur de site authentifié. Cependant, dans le plugin Data Tables Generator, ces failles nécessitaient qu’un attaquant soit connecté en tant qu’utilisateur avec des autorisations d’abonné ou supérieures sur un site cible.

Nous avons divulgué ces problèmes en privé à l’auteur du plugin en même temps que nous avons divulgué pleinement les failles découvertes dans Pricing Table par Supsystic; encore une fois, ils ont publié des correctifs un peu plus d’un mois plus tard. Nous recommandons la mise à jour immédiate vers la dernière version, 1.9.92.

Les utilisateurs de Wordfence Premium ont reçu une nouvelle règle de pare-feu le 21 janvier 2020 pour se protéger contre les exploits ciblant ces vulnérabilités. Les utilisateurs de Wordfence gratuits ont reçu cette règle le 20 février 2020.


La description: Autorisations non sécurisées sur les actions AJAX
Plugin concerné: Générateur de tableaux de données par Supsystic
Plugin Slug: tables-de-données-générateur-par-supsystic
Versions concernées:
ID CVE: Le message sera mis à jour une fois attribué.
Score CVSS: 6.3 (Moyen)
Vecteur CVSS: CVSS: 3.0 / AV: N / AC: L / PR: L / UI: N / S: U / C: L / I: L / A: L
Version corrigée: 1.9.92

Le générateur de tableaux de données de Supsystic est un plugin de gestion de tableau, de graphique et de données réactif facile à utiliser. Il a plusieurs fonctionnalités telles que le CSS personnalisé, la possibilité d’ajouter des iframes, différentes polices et capacités d’étiquette, et plus encore. Malheureusement, nous avons découvert que toutes les actions AJAX pour fournir ces fonctionnalités manquaient de vérifications de capacités et de nonces WordPress pour la protection CSRF (Cross-Site Request Forgery).

 /**
  * Validate and creates the new table.
  * @param Rsc_Http_Request $request
  * @return Rsc_Http_Response
  */
 public function createAction(Rsc_Http_Request $request)
 {
     $title = trim($request->post->get('title'));
     $rowsCount = (int) $request->post->get('rows');
     $colsCount = (int) $request->post->get('cols');

     try {
if (!$this->isValidTitle($title)) {
             return $this->ajaxError($this->translate('Title can't be empty or more than 255 characters'));
         }
$this->getEnvironment()->getModule('tables')->setIniLimits();
// Add base settings
         $tableId = $this->getModel('tables')->add(array('title' => $title, 'settings' => serialize(array())));

if($tableId) {
   $rows = array();

   for($i = 0; $i < $rowsCount; $i++) {
      array_push($rows, array('cells' => array()));
      for($j = 0; $j < $colsCount; $j++) {
         array_push($rows[$i]['cells'], array(
            'data' => '',
            'calculatedValue' => '',
                         'hidden' => '',
                      'type' => 'text',
                      'formatType' => '',
            'meta' => array()
         ));
      }
   }
   // Save an empty table's rows to prevent error when the Data Tables script will be executed
   $this->getModel('tables')->setRows($tableId, $rows);
}
     } catch (Exception $e) {
         return $this->ajaxError($e->getMessage());
     }

     return $this->ajaxSuccess(array('url' => $this->generateUrl('tables', 'view', array('id' => $tableId))));
 }

** Un exemple de fonction déclenchée par l’action AJAX create. Aucun contrôle de nonce ou d’autorisation présent.

Les actions WordPress AJAX peuvent être traitées par tout utilisateur authentifié. En tant que telles, les actions AJAX doivent toujours nécessiter une vérification de capacité supplémentaire afin de vérifier que l’utilisateur qui envoie la demande est un utilisateur administratif authentifié lorsque l’action est destinée uniquement aux utilisateurs administratifs. Sans la vérification des autorisations requises, tout utilisateur connecté en tant qu’abonné ou supérieur pourrait exécuter les actions et apporter des modifications malveillantes à une table de données donnée, ou créer une nouvelle table de données. Avec de nombreux sites autorisant des enregistrements d’abonnés ouverts, la protection des fonctionnalités du site avec des vérifications de capacité est essentielle lors de l’utilisation des actions AJAX.

Les critères d’évaluation vulnérables que nous avons découverts étaient: getListForTbl, updateRows, updateMeta, saveSettings, remove, create, render, getSettings, getMeta, getCountRows, getRows, clone, et rename. Les critères d’effet les plus percutants étaient rename, où un attaquant pourrait renommer un nom de table de données donné, getListForTbl, où un attaquant pourrait découvrir toutes les tables existantes et utiliser ces informations pour créer une demande, saveSettings, où un attaquant pourrait modifier les paramètres du tableau de données de manière malveillante, et create, où un attaquant pourrait créer une nouvelle table de données avec toutes les options définies.


La description: XSS stocké authentifié
Plugin concerné: Générateur de tableaux de données par Supsystic
Versions concernées:
ID CVE: Le message sera mis à jour une fois attribué.
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 corrigée: 1.9.92

En tant qu’extension de la vulnérabilité précédente, nous avons découvert qu’un Javascript malveillant pouvait être injecté dans de nombreux champs du tableau de données, y compris le titre, les cellules du tableau de données, la description et la légende, et plus encore, en utilisant le saveSettings point de terminaison pour mettre à jour une table de données existante.

Le Javascript malveillant s’exécutait alors dans le navigateur d’un visiteur du site chaque fois qu’il accédait à une page contenant le tableau de données. Cela pourrait conduire à la redirection de sites malveillants, à la création de nouveaux comptes d’utilisateurs administratifs et à d’autres actions malveillantes.

Comme mentionné précédemment avec le Tableau des prix par Supsystic plugin, WordPress permet aux administrateurs par défaut la possibilité d’utiliser unfiltered_html. À eux seuls, ces paramètres ne seraient pas considérés comme un risque pour la sécurité si seuls les utilisateurs administratifs avaient accès pour modifier ces paramètres. Cependant, en fournissant unfiltered_html La capacité de ces actions AJAX qui permettait même aux utilisateurs de niveau abonné de modifier ces paramètres a introduit une vulnérabilité de script intersite (XSS).


La description: CSRF vers XSS stocké, création de tables de données, modification des paramètres
Plugin concerné: Générateur de tableaux de données par Supsystic
Plugin Slug: tables-de-données-générateur-par-supsystic
Versions concernées:
ID CVE: Le message sera mis à jour une fois attribué.
Score CVSS: 8,8 (Élevé)
Vecteur CVSS: CVSS: 3.0 / AV: N / AC: L / PR: N / UI: R / S: C / C: H / I: H / A: H
Version corrigée: 1.9.92

Le manque de nonces WordPress pour la protection CSRF sur toutes les actions enregistrées dans ce plugin a également entraîné plusieurs vulnérabilités CSRF (Cross-Site Request Forgery). Étant donné que les actions enregistrées peuvent être exécutées par n’importe quel utilisateur connecté, quel que soit le niveau de privilège, les tentatives d’exploitation CSRF peuvent être ciblées vers n’importe quel utilisateur, même ceux qui n’ont qu’un rôle d’abonné.

Si un attaquant était en mesure d’inciter un utilisateur authentifié à cliquer sur un lien ou à ouvrir une pièce jointe malveillante, une fausse demande pourrait être envoyée au nom de cet utilisateur pour modifier une table de données donnée et injecter du Javascript malveillant. Encore une fois, le Javascript malveillant pourrait injecter un nouvel utilisateur administratif, rediriger les visiteurs du site vers un site malveillant, et plus encore.

Il est important de se rappeler de ne pas cliquer sur les liens dans les commentaires ou les e-mails, sauf si vous pouvez vérifier l’authenticité de la source et de la destination pour vous protéger contre une tentative d’exploitation CSRF. Il est difficile pour les pare-feu de se protéger contre les attaques CSRF car la demande malveillante semble provenir d’un utilisateur valide et authentifié.

Calendrier de divulgation

20 janvier 2020 – Vulnérabilité initialement découverte et analysée. Nous commençons à travailler sur les règles de pare-feu.
21 janvier 2020 – Règle de pare-feu publiée pour les utilisateurs premium de Wordfence. En attente de la réponse de l’équipe du plugin de Supsystic en ce qui concerne les vulnérabilités de Pricing Table by Supsystic.
21 janvier 2020 – L’équipe du plugin confirme la boîte de réception appropriée pour gérer la discussion. Une divulgation complète des vulnérabilités est envoyée.
30 janvier 2020 – Suivi avec l’équipe du plugin en l’absence de réponse de la divulgation.
11 février 2020 – Le développeur du plugin reconnaît le rapport.
20 février 2020 – Les utilisateurs gratuits de Wordfence reçoivent une règle de pare-feu.
21 février 2020 – Suivi supplémentaire et final. Patch insuffisant publié.
21 février au 23 mars 2020 – Des allers-retours avec l’équipe du plugin pour garantir la sortie d’une solution optimale.
23 mars 2020 – Patch final publié.

Conclusion

Dans l’article d’aujourd’hui, nous avons détaillé plusieurs vulnérabilités, notamment les autorisations XSS, CSRF et non sécurisées stockées dans le plug-in Data Tables by Supsystic. Ces failles ont été entièrement corrigées dans la version 1.9.92 et nous recommandons aux utilisateurs de mettre à jour la dernière version disponible immédiatement. Sites en cours d’exécution Wordfence Premium sont protégés contre les attaques contre cette vulnérabilité depuis le 21 janvier 2020. Les sites exécutant la version gratuite de Wordfence ont reçu la mise à jour des règles de pare-feu le 20 février 2020.


Source link

%d blogueurs aiment cette page :