Les plugins WordPress sont-ils sûrs à utiliser ?
Publié: 2020-04-16Au fil des ans, des recherches ont identifié que plus de 20 % des 50 plugins WordPress les plus populaires sont vulnérables aux attaques Web courantes. De plus, une recherche ciblée sur les plugins de commerce électronique a découvert que 7 des 10 plugins de commerce électronique les plus populaires contiennent des vulnérabilités. Malheureusement, les pirates exploitent généralement ces applications vulnérables pour accéder à des informations sensibles telles que les dossiers de santé et les détails financiers. Dans d'autres cas, les vulnérabilités permettent aux pirates de défigurer des sites ou de les rediriger vers d'autres sites contrôlés par des attaquants.

Dans des cas plus récents, nous avons vu des plugins WordPress malveillants être utilisés non seulement pour maintenir l'accès sur des serveurs compromis, mais aussi pour extraire de la crypto-monnaie. Cela pose donc la question de la sécurité des plugins WordPress.
Dans ce blog, nous nous concentrerons en profondeur sur les plugins WordPress en tant que sources potentielles de failles de sécurité.
Développement Web basé sur des plugins.
De manière générale, WordPress est le système de gestion de contenu (CMS) le plus populaire au monde car il alimente plus de 30 % du Web.
Cela dit, la principale force de WordPress réside dans sa capacité à permettre la personnalisation des sites grâce à son offre étendue de dizaines de milliers de plugins et de thèmes. Ces plugins varient en type et en fonctionnalité - de l'ajout d'un formulaire de contact au site à l'optimisation d'un blog pour le référencement, ou même la publication automatique de nouveaux messages sur Facebook.
Développement tiers.
L'idée principale derrière le développement basé sur des plugins est d'offrir des fonctionnalités supplémentaires pour étendre les capacités de base d'un système. Essentiellement, le cœur de l'application est généralement maintenu par un ensemble de développeurs à long terme, tandis que des tiers créent un certain nombre de plugins autour du cœur de l'application.
Ce processus est bénéfique à la fois pour le fournisseur d'applications et le fournisseur de plug-ins, car le fournisseur d'applications peut se concentrer davantage sur les fonctionnalités de base, tandis que le fournisseur de plug-ins n'a pas à se soucier de l'infrastructure du plug-in, qui est fournie par les fonctionnalités de base de l'application. Généralement, WordPress est également pris en charge par une communauté mondiale de milliers de développeurs et de passionnés de logiciels commerciaux et open source.
Aucune consigne de sécurité
Dans l'ensemble, bien qu'il existe un ensemble de normes et de recommandations de codage, il n'y a techniquement pas de directives de sécurité ni d'exigences standard auxquelles un développeur de plug-in doit strictement se conformer. Cela signifie qu'une vulnérabilité dans un plugin peut se propager sur des millions de sites Web.
Et puisque WordPress est largement utilisé, c'est par conséquent une cible populaire pour les attaques. Ainsi, en substance, un pirate exploitant la vulnérabilité d'un plugin peut infecter des milliers de sites. Un scénario dont ont déjà été témoins de nombreux blogueurs.
Malheureusement, les vulnérabilités liées aux plugins ont également tendance à être récurrentes, exploitables et difficiles à détecter. Par conséquent, il est nécessaire de mieux comprendre ces vulnérabilités pour atténuer toute menace de sécurité pertinente. Creusons plus profondément, d'accord ?

WordPress est-il vraiment sécurisé ?
Tout d'abord, répondons à cette question. Pour la plupart, WordPress en tant qu'écosystème brut est très sécurisé tant que les meilleures pratiques de sécurité WordPress sont respectées. En moyenne, environ 30 000 nouveaux sites Web sont piratés chaque jour sur le Web. Ces pirates ont tendance à cibler les sites Web WordPress en raison des vulnérabilités des plugins, des mots de passe faibles et des logiciels obsolètes. Ainsi, atteindre la meilleure sécurité nécessite un niveau d'intentionnalité, ce qui signifie suivre quelques bonnes pratiques de base en matière de sécurité WordPress pour réduire votre vulnérabilité aux attaques.
Lire la suite : 11 moyens efficaces de faire évoluer votre site Web WordPress pour un trafic élevé
D'où viennent ces vulnérabilités ?
Un rapport récent de wpscan.org a révélé que WordPress a près de 4 000 vulnérabilités de sécurité connues. Une grande majorité de ces vulnérabilités ont été causées par des plugins. Et bien que certaines de ces vulnérabilités liées aux plugins puissent avoir de graves conséquences, beaucoup restent inaperçues pendant des années avant d'être corrigées. Dans la plupart des cas, ils peuvent généralement être corrigés avec de petites modifications localisées de leur code source.
Cependant, avant de prendre de l'avance sur nous-mêmes, prenons un peu de recul.
Que sont les plugins ?
Fondamentalement, les plugins sont des extensions logicielles qui complètent les applications avec de nouvelles fonctionnalités et comportements personnalisés. En particulier, WordPress propose des milliers de plugins (plus de 52 000), qui ont été utilisés pour créer des milliers d'applications Web personnalisées.
Depuis que les applications Web basées sur des plugins sont devenues plus courantes, de plus en plus de développeurs se sont concentrés sur l'exploration de leur potentiel pour réinventer les applications Web en composant, configurant et étendant différents plugins avec des fonctionnalités de pointe.
Implications du développement de plugins
Cela étant dit, la possibilité d'exploiter des plugins pour étendre les systèmes Web avec des fonctionnalités supplémentaires et personnalisées a des implications à la fois positives et négatives pour les développeurs. Premièrement, sur une note positive, il existe normalement plusieurs options de personnalisation parmi lesquelles choisir, donnant aux développeurs la possibilité de créer rapidement et facilement des applications Web adaptées aux besoins des utilisateurs. Ainsi, facilitant le prototypage et le développement rapides.
Cependant, du côté négatif, une application Web peut finir par être une composition complexe de plusieurs plugins provenant de différentes sources. Ce qui pose finalement des soucis liés à la sécurité des plugins. Par exemple, TimThumb, un plugin utilisé par des millions d'applications basées sur WordPress aurait été ouvert à un exploit où les attaquants pourraient délibérément exécuter du code à distance.
En fait, environ 15 % des vulnérabilités des systèmes Web peuvent être considérées comme critiques selon la National Vulnerability Database (NVD) des États-Unis, dont près de 35 % sont des vulnérabilités facilement exploitables.
Quelles sont les conséquences des plugins compromis ?
Outre la perte d'informations financières des utilisateurs ou même la compromission de leurs dossiers de santé, plus une vulnérabilité est grave, plus l'impact financier sur les éditeurs de logiciels est important. De plus, cela est encore exacerbé si les développeurs ne parviennent pas à publier un chemin viable au moment de la divulgation. Ainsi, les fournisseurs de plugins s'efforcent généralement de créer des applications plus sécurisées
Examinons maintenant certaines vulnérabilités de sécurité que l'on trouve généralement dans les plugins pour mieux comprendre leurs conséquences et leurs implications.
Vulnérabilités de sécurité
Comme nous l'avons constaté, les vulnérabilités ouvrent des possibilités d'utilisation abusive potentielle des systèmes logiciels. En fin de compte, étant donné que WordPress permet à des millions de développeurs à travers le monde de créer leurs propres plugins, il est irréaliste de ne pas s'attendre à ce qu'un niveau de compromis se produise dans les plugins.
Par conséquent, la sécurité peut être violée par des interactions imprévues des plugins avec le système central, entraînant des vulnérabilités qui peuvent être potentiellement exploitées par des attaquants. Cela implique alors que la sécurité des systèmes Web repose sur le contrôle des vulnérabilités du système principal et des plug-ins.
Complexité WordPress
En raison de la complexité de WordPress, il a parfois tendance à être en proie à des vulnérabilités. Par exemple, WordPress fournit une infrastructure intuitive à laquelle les plugins peuvent apporter de nouvelles fonctionnalités en modifiant l'état global partagé ou en exécutant une fonction à un point spécifique de l'exécution du cœur du système. Par conséquent, une vulnérabilité de plug-in peut apparaître lorsque le plug-in envoie des données d'entrée malveillantes aux composants principaux sans nettoyage ni validation d'entrée appropriés.
Exemples de vulnérabilités de plugin
En fin de compte, les vulnérabilités les plus courantes des plug-ins sont les scripts intersites, l'injection SQL et la falsification de requêtes intersites. Dans l'ensemble, le type de vulnérabilité le plus dangereux qui peut être facilement exploité par des attaquants est l'injection SQL. Cependant, d'autres vulnérabilités, sources de failles et compromis existent, à savoir :
- Erreurs de traitement des données
- Validation d'entrée incorrecte
- Exposition aux informations
- Traversée de chemin
- Fonctions de sécurité
- Contrôles d'accès
- Mauvais contrôle d'accès
- Autorisation incorrecte
- Authentification incorrecte
- Falsification de requêtes intersites
- Téléchargement illimité de fichiers
- Fichiers accessibles aux parties externes
- Suivi de lien
- Ouvrir la redirection
- Injection de commande
- Injection de commande du système d'exploitation
- Script intersite
- Injection SQL
- Injection de code

Pour plus de contexte, explorons les attaques et les vulnérabilités les plus courantes.
- · Injection SQL : les injections SQL se produisent généralement lorsqu'un attaquant accède à la base de données WordPress d'un utilisateur et à toutes les données de son site Web. Les injections SQL peuvent également être utilisées pour insérer de nouvelles données dans une base de données, y compris des liens vers des sites Web malveillants ou de spam.
Les injections SQL permettent l'exécution de commandes sur le serveur back-end, comme l'extraction d'informations sensibles. Dans un environnement hébergé, une attaque par injection SQL peut en outre être utilisée comme tremplin pour des attaques contre des sites non vulnérables.
- · Cross-Site Scripting : Cette attaque permet l'exécution d'un script sur le client afin de contourner les contrôles d'accès. Il cible généralement tous les visiteurs d'un site. Dans un environnement hébergé, une telle attaque peut être utilisée pour voler les cookies de session de l'administrateur du site, permettant à l'attaquant de se faire passer pour l'administrateur.
- · Cross-Site Request Forgery : cette vulnérabilité permet au pirate d'effectuer une transaction au niveau de l'application au nom de la victime. Dans un environnement hébergé, un attaquant peut se connecter au site au nom de l'administrateur et effectuer des activités malveillantes telles que la redirection d'utilisateurs ou l'exécution de transactions d'administration.
Communes dans les plugins WordPress, les vulnérabilités de script intersite fonctionnent de la manière suivante : un attaquant trouve un moyen d'amener une victime à charger des pages Web avec des scripts JavaScript non sécurisés.

Où apparaissent la plupart des vulnérabilités ?
Une étude technique a découvert que la plupart des vulnérabilités (environ 92 %) apparaissent dans le code du plugin. De plus, selon les résultats, les vulnérabilités telles que Cross-site Scripting et Cross-site Request Forgery étaient plus courantes dans le code du plug-in, tandis que d'autres vulnérabilités étaient plus répandues dans le code principal. Dans le même ordre d'idées, l'étude a révélé que la qualité des plugins variait et qu'il n'y avait aucune corrélation entre les notes des plugins et le nombre de vulnérabilités qu'ils contenaient.

Le processus d'écriture de code PHP
Le processus d'écriture de code pourrait être la genèse de toute vulnérabilité ou compromis. D'une manière générale, PHP est bien connu pour prendre en charge l'exécution de code arbitraire côté serveur sans invoquer directement le système d'exploitation hôte. Cela dit, chaque fois que les développeurs font preuve de négligence lors du processus d'écriture du code, cela soulève la possibilité de l'introduction de vulnérabilités de script intersite dans le code du plug-in.
D'autre part, l'injection SQL est une vulnérabilité courante car elle peut être facilement détectée et exploitée. Ironiquement, même un site Web avec une petite base d'utilisateurs est susceptible d'être soumis à une tentative d'attaque d'injection SQL.
Une partie de l'exposition aux vulnérabilités provient du fait que les développeurs utilisent des ressources non sécurisées. De même, la validation correcte des entrées reste un défi majeur pour les développeurs de plugins, car de nombreux plugins récemment développés ont été créés par des développeurs pas si qualifiés.
Les vulnérabilités causées par les plugins WordPress sont-elles critiques ?
Tout bien considéré; une vulnérabilité peut influencer négativement le système Web de plusieurs manières. Par exemple, l'exploitation réussie d'une vulnérabilité peut entraîner une perte totale de confidentialité, mais sans perte de disponibilité.
Comme cela a été noté, SQL Injection semble être le type de vulnérabilité le plus dangereux, bien qu'il n'affecte que partiellement l'intégrité, la disponibilité et la confidentialité du système. Cependant, une telle vulnérabilité a le potentiel de permettre aux attaquants d'accéder sans restriction aux fichiers ou aux informations.
Ainsi, par inadvertance, la majorité des vulnérabilités ont le potentiel de conduire à des violations de données, tandis que quelques vulnérabilités n'exposent pas nécessairement les applications Web à de graves risques de sécurité. Soit, il est important d'éviter de prendre des risques avec de telles cotes.
Combien de temps une vulnérabilité peut-elle survivre dans le code d'un plugin WordPress ?
Habituellement, les vulnérabilités dans le code ont tendance à transiter par des états distincts, variant de l'introduction, en passant par la divulgation, jusqu'à la publication d'un correctif corrigeant la menace de sécurité.
En règle générale, une vulnérabilité est divulguée lorsque le découvreur révèle les détails de la menace de sécurité à un public plus large. Finalement, la vulnérabilité est corrigée lorsque le développeur publie un correctif qui corrige la menace de sécurité sous-jacente. Cependant, il arrive parfois qu'une vulnérabilité reste inaperçue dans une application Web pendant des années avant d'être identifiée puis corrigée.
Atténuations possibles et méthodes de détection
Mieux vaut prévenir que guérir comme le disent la plupart des gens. Donc, si les développeurs de plugins peuvent parfaitement comprendre, détecter et éliminer les scripts intersites, l'injection SQL et la contrefaçon de requêtes intersites, il est possible que nous ayons des plugins avec 75 % de vulnérabilités en moins.
Cependant, il convient de noter que ces trois vulnérabilités ne sont pas les seules vulnérabilités pouvant être exploitées par des attaquants. Mais plutôt, sont les vulnérabilités les plus courantes.
Ainsi, bien que ces stratégies d'atténuation proposées ne garantissent pas qu'un plugin donné sera entièrement sécurisé, elles établissent cependant de bons principes pour la prévention des vulnérabilités. Par exemple:
- Comprendre comment les données sont utilisées et l'encodage attendu par les parties centrales de WordPress. Dans ce cas, les développeurs doivent toujours considérer toutes les entrées comme malveillantes et rejeter toute entrée qui n'est pas strictement conforme au modèle de codage requis, ou la transformer en une entrée valide.
- Pour protéger les bases de données de l'injection SQL, les développeurs doivent utiliser des instructions SQL paramétrées en séparant le code de la manipulation des données. Vérifiez également toujours les en-têtes pour vérifier si la demande provient de la même origine. En outre, il peut également être utile d'éviter d'exposer des données à des attaquants non authentifiés.
- Une bonne pratique consiste à éviter la méthode GET pour toute requête qui déclenche un changement d'état.
Détection de vulnérabilité
Malheureusement, il n'existe pas de méthode cohérente pour détecter les faiblesses de code les plus courantes avec 100 % de précision et de couverture. Malheureusement, même les techniques modernes qui utilisent l'analyse des flux de données pour détecter les scripts intersites donnent parfois des faux positifs.
En revanche, les méthodes d'analyse manuelle telles que les revues de code ont tendance à être plus efficaces que les méthodes entièrement automatisées, en particulier pour les vulnérabilités liées à la conception. Par exemple, la falsification de requêtes intersites est particulièrement difficile à détecter de manière fiable à l'aide de méthodes automatisées, car chaque application a sa propre politique de sécurité et sa propre manière d'indiquer quelles requêtes nécessitent une forte confiance que l'utilisateur a l'intention de faire la requête.
Cependant, d'un autre côté, l'analyse manuelle peut être utile pour trouver l'injection SQL, bien qu'elle puisse ne pas atteindre la couverture de code souhaitée dans des contraintes de temps limitées. Cela peut devenir difficile pour les faiblesses qui doivent être prises en compte pour toutes les entrées, car la surface d'attaque peut être trop grande.
Par conséquent, certaines organisations soulignent l'importance d'une approche équilibrée qui comprend à la fois des examens manuels et une analyse automatisée qui englobe toutes les phases du processus de développement du système Web.
Meilleures pratiques pour protéger votre application WordPress
- Téléchargez des plugins uniquement à partir de sources réputées telles que WordPress.org : comme n'importe qui peut développer un plugin WordPress, les pirates exploitent notoirement cette vulnérabilité pour cacher leurs propres plugins malveillants. Un marché réputé peut ne pas garantir pleinement l'accès à des plugins inoffensifs, mais est recommandé comme pratique d'atténuation.
- Assurez-vous toujours que tous vos plugins sont à jour : les utilisateurs de WordPress reçoivent généralement des e-mails de notification qu'ils ignorent souvent. Assurez-vous de configurer vos plugins pour qu'ils se mettent à jour automatiquement, ou au moins de les mettre à jour manuellement vous-même.
- Vérifiez la posture de sécurité du plug-in en analysant les problèmes de sécurité : la plupart des plug-ins sont open-source, ce qui signifie que leur code source est disponible. Assurez-vous donc d'utiliser un outil d'analyse de code source statique qui vous fournira le « bilan de santé » du plugin. Certains scanners avancés peuvent même vous indiquer les recommandations de réparation optimales et les plus rapides.
- Supprimez tous les plugins inutilisés : malheureusement, le code des anciens plugins inutilisés reste généralement sur le serveur, même lorsque les plugins sont inactifs. Veillez donc à toujours supprimer les plugins inutilisés dans le cadre de la maintenance de votre site WordPress
Recommandations pour les développeurs de plugins
- Intégrez toujours la sécurité lors du développement du plug-in : les vulnérabilités entraînent un coût plus élevé pour être corrigées ultérieurement. Par conséquent, intégrez toujours la sécurité dans le développement du plug-in dans le cadre de votre processus sécurisé de cycle de vie du développement logiciel (SDLC).
- Exécutez le plugin via un scanner de code pour vous assurer qu'il est conforme aux dernières normes de sécurité. Assurez-vous d'effectuer un test complet d'analyse du code source pendant le développement et avant la publication.
Développement de plugins sécurisés
Comme cela a été noté, les développeurs de plugins doivent s'efforcer d'écrire du code sécurisé. Malheureusement, de nombreux développeurs ne savent toujours pas comment faire, car ils ne sont pas si qualifiés. En particulier, compte tenu de la nature des vulnérabilités les plus courantes citées ci-dessus, il est clair que de nombreux développeurs ne comprennent pas les attaques courantes, les fonctions de sécurité fournies par le langage et la plate-forme qu'ils utilisent, et comment utiliser les pratiques applicables pour atténuer les problèmes de sécurité.
Par conséquent, notre recommandation chez Creole Studios est que de nouvelles méthodologies devraient peut-être être développées sur mesure pour les développeurs de plugins. De telles méthodologies devraient promouvoir la sécurité dans les phases d'exigences et de conception, car les développeurs sont les entités les plus importantes en matière de sécurité logicielle.
Dernières pensées
Pour résumer le sujet, les plugins WordPress peuvent être compromis, les vulnérabilités les plus courantes étant le script intersite, l'injection SQL et la falsification de requête intersite.
Malheureusement, la recherche semble suggérer que la fréquence à laquelle ces vulnérabilités se produisent ne semble pas diminuer avec le temps. Il est prudent de supposer que la principale raison en est que la plupart des développeurs de plugins WordPress restent quelque peu sous-qualifiés en matière de programmation sécurisée.
Cela étant dit, la première ligne de défense devrait être l'équipe de développement ! Et nous croyons qu'une fois que les meilleures pratiques de sécurité sont appliquées, les utilisateurs peuvent mieux dormir la nuit, sachant qu'ils sont protégés contre les cybercriminels.
Pour plus d'informations sur nos pratiques de sécurité WordPress, assurez-vous de bien vouloir nous contacter pour une consultation.