Une vulnérabilité a été découverte dans le Client InfiniteWP plugin versions 1.9.4.4 ou antérieures. InfiniteWP Client est un plugin qui, lorsqu’il est installé sur un site WordPress, permet à un propriétaire de site de gérer un nombre illimité de sites WordPress à partir de son propre serveur. InfiniteWP Client est actuellement installé sur plus de 300 000 sites WordPress.

Il s’agit d’une vulnérabilité critique de contournement d’authentification. Une preuve de concept a été publiée ce matin, 14 janvier 2020. Si vous utilisez le client InfiniteWP version 1.9.4.4 ou antérieure, nous vous recommandons de mettre immédiatement à jour votre installation pour protéger votre site.

Fonctionnement du client InfiniteWP

Le plugin InfiniteWP Client fonctionne en permettant à un serveur de gestion central de s’authentifier auprès de l’installation WordPress afin que les propriétaires de sites puissent gérer le site. À partir d’un emplacement central, les propriétaires de sites peuvent effectuer des opérations de maintenance telles que des mises à jour en un clic pour le noyau, les plug-ins et les thèmes sur tous les sites, la sauvegarde et la restauration de sites, et l’activation / désactivation de plug-ins et de thèmes sur plusieurs sites simultanément. Le plugin InfiniteWP Client authentifie le serveur de gestion central pour chaque installation WordPress.

Contournement de l’authentification InfiniteWP

La vulnérabilité révélée la semaine dernière est une vulnérabilité de contournement d’authentification, qui pourrait permettre à un attaquant d’utiliser la logique d’authentification dans le plug-in InfiniteWP Client pour s’authentifier et accéder à l’installation WordPress avec InfiniteWP installé. Un attaquant n’aurait pas besoin du serveur InfiniteWP installé pour exploiter cette vulnérabilité; ils peuvent simplement créer une demande adressant la logique InfiniteWP pour se connecter en tant qu’utilisateur administratif s’ils connaissent le nom d’utilisateur.

Mise à jour vers Wordfence

Normalement, l’équipe d’intelligence des menaces Wordfence crée une règle de pare-feu et la déploie sur les installations Wordfence existantes. En raison de la complexité et de la gravité de cette vulnérabilité, nous avons dû intégrer la protection de cette vulnérabilité dans la base de code Wordfence, ce qui nous a obligés à publier une nouvelle version de Wordfence.

Le lundi 13 janvier 2020, nous avons publié la version 7.4.3 de Wordfence, qui inclut une protection contre la vulnérabilité de contournement de l’authentification du client InfiniteWP.

Détails techniques

Voici une demande de preuve de concept de base qui exploite la vulnérabilité.

POST / HTTP/1.1
Host: example.org
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:72.0) Gecko/20100101 Firefox/72.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Type: text/plain
Content-Length: 93

_IWP_JSON_PREFIX_eyJpd3BfYWN0aW9uIjoiYWRkX3NpdGUiLCJwYXJhbXMiOnsidXNlcm5hbWUiOiJhZG1pbiJ9fQ==

Le corps de la demande décode {"iwp_action":"add_site","params":{"username":"admin"}} qui demande au client InfiniteWP d’exécuter le add_site l’action, et aussi pour vous connecter en tant que admin utilisateur. Il ne nécessite aucune authentification et est relativement facile à exploiter.

Lorsqu’un site est initialement configuré à l’aide du client InfiniteWP, il doit se connecter au logiciel serveur InfiniteWP. Le serveur InfiniteWP envoie une demande au client InfiniteWP et transmet une clé publique. Le serveur InfiniteWP possède la clé privée correspondante qui est utilisée pour signer les demandes. Les demandes ultérieures du serveur InfiniteWP au client InfiniteWP peuvent être authentifiées par le site en vérifiant la signature à l’aide de la clé publique. La demande initiale du serveur InfiniteWP utilise l’une des deux actions, add_site ou readd_site. De par leur conception, ces actions ne sont pas authentifiées (car nous n’avons pas encore de clé publique). Malheureusement, le code est structuré de sorte que certaines fonctionnalités peuvent toujours être utilisées. Dans ce cas, le client InfiniteWP fournit une fonctionnalité pour se connecter automatiquement en tant qu’administrateur sans fournir de mot de passe.

Lorsqu’un site est initialement connecté au serveur InfiniteWP, la demande faite par le serveur InfiniteWP au site exploite réellement cette vulnérabilité (involontairement). Il est donc assez difficile d’écrire une règle WAF pour se protéger contre cette vulnérabilité, car les demandes légitimes et malveillantes peuvent être identiques.

Nous avons choisi d’intégrer la protection de cette vulnérabilité dans Wordfence. Depuis Wordfence, nous pouvons déterminer si le site est déjà connecté à un serveur InfiniteWP et empêcher le code vulnérable de s’exécuter si le add_site ou readd_site les actions sont transmises au client InfiniteWP.

Jusqu’à présent, nous n’avons pas vu de preuves de l’exploitation de cette vulnérabilité dans la nature, mais nous nous attendons à voir des tentatives dans un proche avenir.

Pare-feu non WordPress inefficaces

En outre, le correctif que nous avons mis en œuvre pour cette vulnérabilité nécessitait une intégration étroite avec WordPress. Wordfence fonctionne comme un plugin WordPress et est donc capable d’implémenter ce type de correctif.

En tant que fournisseur de pare-feu, notre objectif est de minimiser les faux positifs tout en bloquant les attaques. Nous ne voulons pas bloquer accidentellement le trafic légitime. En raison de la nature de cette vulnérabilité, il est extrêmement difficile de créer une règle de pare-feu qui bloque les attaques ET élimine les faux positifs pour cette vulnérabilité, sans intégration étroite avec l’API WordPress.

Nous portons cela à votre attention car si vous utilisez un WAF basé sur le cloud qui ne s’intègre pas étroitement avec WordPress, vous ne serez peut-être pas protégé contre cette vulnérabilité. Votre cloud WAF n’a pas accès à l’API WordPress pour implémenter ce type de correctif.

Protection pour tous les utilisateurs

Normalement, nous publions une règle de pare-feu dans le cadre de notre flux de défense contre les menaces qui est déployé en temps réel sur notre Wordfence Premium clients et à la version communautaire gratuite de Wordfence dans les 30 jours. Étant donné que la protection de cette vulnérabilité nécessitait des modifications de code dans Wordfence, nous avons choisi de la rendre disponible à tous les utilisateurs immédiatement.

Notre recommandation pour le moment est de mettre à jour votre plugin InfiniteWP Client dès que possible vers la version 1.9.4.5. La mise à jour de Wordfence vers la version 7.4.3 sur les sites utilisant InfiniteWP Client fournira une protection simultanée.

Merci à Matt Rusnak et Ramuel Gall d’avoir contribué à cette mise à jour.


Source link

%d blogueurs aiment cette page :