Le 2 février 2021, notre équipe Threat Intelligence a divulgué de manière responsable les détails d’une vulnérabilité dans Médias externes, un plugin WordPress utilisé par plus de 8 000 sites. Cette faille permettait aux utilisateurs authentifiés, tels que les abonnés, de télécharger des fichiers arbitraires sur n’importe quel site exécutant le plugin. Cette vulnérabilité pourrait être utilisée pour réaliser l’exécution de code à distance et reprendre le contrôle d’un site WordPress.

Nous avons d’abord contacté le développeur du plugin le 2 février 2021. Après avoir établi un canal de communication approprié, nous avons fourni la divulgation complète le même jour. Après plusieurs correctifs mineurs et suivis avec le développeur, une version entièrement corrigée a été publiée en tant que version 1.0.34.

Ceci est considéré comme une vulnérabilité critique. Par conséquent, nous vous recommandons vivement de mettre à jour immédiatement vers la dernière version corrigée disponible, 1.0.34.

Les utilisateurs de Wordfence Premium ont reçu une règle de pare-feu pour se protéger contre tout exploit visant cette vulnérabilité le 2 février 2021. Les sites utilisant toujours la version gratuite de Wordfence ont reçu la même protection le 4 mars 2021.

La description: Téléchargement de fichiers arbitraires authentifiés et exécution de code à distance
Plugin concerné: Médias externes
Plugin Slug: média externe
Versions affectées:
ID CVE: En attente.
Score CVSS: 9,9 (critique)
Vecteur CVSS: CVSS: 3.1 / AV: N / AC: L / PR: L / UI: N / S: C / C: H / I: H / A: H
Version entièrement corrigée: 1.0.34

External Media est un plugin WordPress conçu pour permettre aux utilisateurs de télécharger des fichiers multimédias à partir de sources externes. Malheureusement, le plugin présentait une faille qui permettait aux utilisateurs de bas niveau authentifiés comme les abonnés de télécharger des fichiers PHP à partir de sources externes. Tout site permettant à quiconque de s’inscrire en tant qu’abonné était particulièrement vulnérable.

Le plugin a enregistré une action AJAX, wp_ajax_upload-remote-file, qui était lié à la upload_remote_file une fonction. Cette fonction était utilisée pour obtenir le nom, l’URL et la légende du fichier distant, en plus de quelques autres champs.

public function upload_remote_file() {
  $file = $_POST['url'];
  $plugin = $_POST['plugin'];
  $filename = $_POST['filename'];
  $caption = !empty($_POST['caption']) ? $_POST['caption'] : '';
  $referer = !empty($_POST['referer']) ? $_POST['referer'] : '';
  $loaded_plugin = $this->load_plugin( $plugin );
  $this->_call_class_method( $loaded_plugin['phpClassName'], 'download', array( $file, $filename, $caption, $referer ) );
  }

Ces informations ont été utilisées pour charger une méthode «plugin» pour télécharger un fichier, puis déclencher le download fonction qui a finalement déclenché la fonction de téléchargement de fichier save_remote_file qui a enregistré le fichier distant sur le serveur.

Malheureusement, il n’y avait aucune vérification de capacité qui vérifiait si un utilisateur avait les capacités appropriées pour télécharger un fichier, ce qui permettait à tout utilisateur connecté au site WordPress exécutant le plugin de télécharger des fichiers à l’aide de la fonctionnalité de support externe. Il n’y avait pas non plus de vérifications nonce, ce qui permettait à un attaquant d’exploiter cette fonctionnalité à l’aide d’une attaque de falsification de requête intersite.

En plus des capacités manquantes et des vérifications nonce, il n’y avait pas de validation sur le nom de fichier en cours de téléchargement, ce qui a permis de définir une extension de fichier PHP. Cela a effectivement permis aux utilisateurs authentifiés de télécharger des fichiers PHP sur un site vulnérable qui pourrait être utilisé pour l’exécution de code à distance, permettant finalement à un attaquant de prendre complètement le contrôle d’un site WordPress vulnérable.

Calendrier de divulgation

2 février 2021 – Conclusion de l’analyse du plugin qui a conduit à la découverte d’une vulnérabilité dans le plugin External Media. Nous développons une règle de pare-feu pour protéger les clients de Wordfence et la diffusons aux utilisateurs de Wordfence Premium avant de prendre contact avec le développeur du plugin.
2 février 2021 – Le développeur du plugin confirme la boîte de réception pour gérer la discussion. Nous envoyons une divulgation complète.
15 février 2021 – Une nouvelle version mise à jour du support externe est publiée contenant un correctif partiel. Nous informons le développeur des améliorations supplémentaires nécessaires.
15 février 2021 – 5 mai 2021 – Plusieurs suivis avec le développeur qui reste en contact avec nous. Quelques correctifs partiels sont publiés pendant cette période.
4 mars 2021 – Les utilisateurs gratuits de Wordfence reçoivent des règles de pare-feu.
5 mai 2021 – Une version entièrement corrigée du plugin est publiée.

Conclusion

Dans l’article d’aujourd’hui, nous avons détaillé une faille dans les médias externes qui permettait aux attaquants authentifiés de télécharger des fichiers arbitraires sur le serveur d’un site vulnérable et de réaliser l’exécution de code à distance. Cette faille a été entièrement corrigée dans la version 1.0.34. Nous recommandons à tous les utilisateurs de mettre immédiatement à jour vers la dernière version disponible, qui est la version 1.0.34 au moment de cette publication.

Wordfence Premium les utilisateurs ont reçu des règles de pare-feu protégeant contre cette vulnérabilité le 2 février 2021, tandis que ceux qui utilisent encore la version gratuite de Wordfence ont reçu la même protection le 4 mars 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 d’une vulnérabilité critique qui peut conduire à une prise de contrôle complète du site.


Source link