Les pirates commencent à exploiter la faille de l'API REST de WordPress pour arnaquer les utilisateurs
Plus d'un million de sites sont vulnérables

Le , par Olivier Famien, Chroniqueur Actualités
Au début du mois de février, plus d’un million de sites web WordPress ont fait les frais de plusieurs campagnes de défaçage. Des pirates ont exploité une faille de l’API REST présente dans les versions 4.7 et 4.7.1 du CMS WordPress afin de modifier les publications sur les sites gérés par le CMS, défigurant ainsi ces sites vulnérables. Ces campagnes de défaçage étaient si intenses qu’il a même été rapporté que plus de 90 000 pages web ont été défacées par seulement quatre groupes de hackers. Et dans plusieurs cas, l’on notait même que certains pirates écrasaient les défaçages effectués par d’autres pirates afin de laisser leurs propres empreintes sur ces sites exposés.

Pour mieux comprendre comment ces pirates sont parvenus à défigurer autant de sites avec succès, il faut savoir que l'API REST introduite dans les versions 4.7 et 4.7.1 permet d’afficher, de modifier, de supprimer ou de créer des publications. Vu qu’elle est activée par défaut dans ces deux versions, les pirates envoient simplement une charge utile (code malicieux) vers l’API REST, ce qui leur permet d’élever leurs privilèges et de modifier les publications sur les sites WordPress vulnérables. Selon Logan Kipp de l’entreprise de sécurité SiteLock, son « confort d’exécution est si faible et si facile que nous voyons des pirates amateurs prendre cet exploit et s’en donner à cœur joie ». Cette faille a même été exploitée en exécutant du code à distance sur ces sites ayant les plug-ins Insert PHP, Exec-PHP ainsi que d’autres plug-ins similaires. En principe ces plug-ins permettent aux utilisateurs d’insérer directement dans les publications du code PHP afin d’effectuer plus facilement des personnalisations. Aussi, en couplant cette faille à ces plug-ins, les attaquants sont en mesure d’exécuter du code PHP tout en injectant du contenu dans les bases de données.

Même si ces campagnes sont assez persistantes, certains experts expliquent qu’elles ne durent pas longtemps, car les pirates trouvent difficilement les moyens de tirer des avantages pécuniaires. Toutefois, depuis quelques jours, l’on note une escalade dans les pratiques de ces tiers malveillants. En effet, ces derniers ont commencé à chercher les voies et moyens pour se faire de l’argent en exploitant cette faille. La trouvaille qu’ils ont eu à faire est de mettre sous les mots laissés sur les sites défigurés des liens renvoyant vers un site de pharmacie en ligne proposant un médicament pour lutter contre le dysfonctionnement érectile. SiteLock qui en a fait la découverte explique que si un internaute venait à entrer ses identifiants de carte de crédit afin d’acheter ce produit, ses identifiants seraient enregistrés et utilisés par ces pirates pour faire des achats ou vendus à d’autres personnes dans le pire des cas.

Pour se prémunir contre ses attaques, il est fortement conseillé de faire la mise à jour de WordPress en passant à la version 4.7.2 disponible depuis le mois de janvier. En principe, les CMS WordPress des utilisateurs devraient être à jour, car la mise à jour automatique est activée par défaut dans le produit. Mais si, comme le souligne Kaspersky, plus de 1,5 million de sites web sont encore exposés à ces attaques, c’est que les utilisateurs ont certainement préféré désactiver cette fonctionnalité.

Pour celui qui fait face à ce cas de défaçage de son site ou un site tiers, il est recommandé, en attendant de faire la dernière mise à jour, de le traiter comme s’il avait affaire à une à l’exploitation d’une vulnérabilité de type XSS en faisant le ménage au niveau des valeurs pointant vers le contrôleur de l’API.

Source : SiteLock, Kaspersky

Et vous ?

Que pensez-vous de cette situation vu qu’un correctif est déjà disponible ?

Est-ce de la négligence de la part des utilisateurs de WordPress ?

Voir aussi

WordPress sort en urgence la mise à jour 4.7.2 pour corriger trois failles de sécurité incluant une faille de type injection SQL et XSS
WordPress : Plus de 90 000 sites et blogs seraient victimes d'attaques lancées par quatre groupes de hackers altérant ainsi leur contenu
WordPress est de loin le CMS le plus ciblé par les cyberattaques en grande partie en raison du mauvais entretien et la négligence des webmasters

La Rubrique Web, Forum Sécurité Web, Cours et tutoriels Web, FAQ Web


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Geoffrey74 Geoffrey74 - Membre confirmé https://www.developpez.com
le 24/02/2017 à 7:06
Voila pourquoi j'évite autant que possible l'utilisation de CMS, toujours à la merci d'une faille que peut ne pas être comblée rapidement

371 000 résultat ce matin !

Je l'ai vu à mainte reprise, souvent des "développeur" propose la mise en place d'un site pour quelques centaine d'euros, en posant un wordpress, un thème gratuit et hop, c'est en place.
Au départ tout est à jours (et encore pas toujours), mais avec le temps, aucun suivi n'est fait et le propriétaire n'y connaissant rien, pense que tout est OK et ne se doute même pas que leur site n'est pas à jour et sécurisé.

Vrai question, un webmaster peut il est inquiété pour ce genre de chose ? Même si il n'est pas sous contrat, doit il avoir un devoir de morale envers ses clients ?
Avatar de Jarodd Jarodd - Membre expérimenté https://www.developpez.com
le 24/02/2017 à 9:46
S'il n'est pas sous contrat, que le client n'a pas payé pour de la maintenance, on ne peut rien reprocher au développeur. Il ne va pas bosser gratuit non plus...
Par contre il a un devoir de conseil, il doit avertir son client qu'il existe toujours un risque d'exploitation de failles, notamment si on n'est plus à jour, qui est plus répandu avec un CMS qu'avec une solution développée, au client de faire son choix (c'est pas le même tarif). Il y a certains clients qui demandent qu'on leur mette en place le site, et ensuite ils font eux-même les mises à jour, donc la maintenance n'est pas de la responsabilité du développeur.
Avatar de jfsenechal jfsenechal - Membre actif https://www.developpez.com
le 24/02/2017 à 10:00
les pirates envoient simplement une charge utile vers l’API REST, ce qui leur permet d’élever leurs privilèges
Ca consite en quoi, quelqu'un sait m'expliquer ?
Avatar de SkyZoThreaD SkyZoThreaD - Membre éprouvé https://www.developpez.com
le 24/02/2017 à 13:20
La charge utile ou "payload", c'est du code exécutable sous forme de texte qu'on fait passer par une faille de sécurité (un dépassement de tampon ou "overflow" la plupart du temps) et qui s’exécute sur la machine de la victime.
Comme le code n'est pas attendu par la machine, il est exécute sans contrôle de l'OS et obtient tous les droits sur le système.
La plupart du temps, les payloads sont très petits et permettent uniquement de créer une connexion avec la machine de l’attaquant qui reçoit un accès root par une connexion tcp.
Les firewalls standards n'aident pas car la demande de connexion vient de la machine de la victime et le firewall laisse passer les connexions dans ce sens là.
Avatar de kilroyFR kilroyFR - Membre actif https://www.developpez.com
le 25/02/2017 à 14:54
Pas la peine de jeter la pierre aux developpeurs du CMS. Combien d'entreprises ont des developpeurs qui comprennent techniquement a peine ce qu'ils font et autorisent ce genre de trous de securité.
J'ai tendance a croire que l'efficacité a resoudre ce probleme est meilleure sur des CMS que sur des applis "maisons" pour lesquelles toutes les securité de base sont souvent omises parce que codé a l'arrache. Au moins le CMS fait deja un minimum.
Ce sont souvent les logiciels les plus populaires qui sont attaqués; ca ne veut pas dire pour autant qu'ils sont codés avec les pieds. Bon ok ils en ont trouvé une qui sera patchée et basta. On a eu le cas recemment avec Mongodb ou là c'etait plus grave puisqu'il s'agissait de vidage de BDD complet ! Là c'est plus problématique.
Avatar de Geoffrey74 Geoffrey74 - Membre confirmé https://www.developpez.com
le 26/02/2017 à 12:05
Citation Envoyé par kilroyFR Voir le message
Pas la peine de jeter la pierre aux developpeurs du CMS.
D'accord avec toi, quand j'entends le mot développeurs, je comprend quelqu'un qui maitrise, ou connait un minimum.
Je parlais plus précisément des personnes qui n'y connaissent strictement rien et qui utilisent ces CMS pensant cela sûre et utilisent moulte plugins pour faire "beau".

Après ce n'est que mon avis, mais j'ai tendance à penser que plus on utilise de plugins externe, plus le risque de faille est important.
Avatar de SurferIX SurferIX - Membre chevronné https://www.developpez.com
le 01/03/2017 à 22:18
Allez, voici un exemple que je donne sur l'opérateur ternaire à "utiliser avec parcimonie" = une seule fois à mes étudiants.
Le code source officiel de Wordpress, ligne 600 :
https://github.com/WordPress/WordPre...list-table.php

Code : Sélectionner tout
( ( ( 'approve' === $action || 'unapprove' === $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
Ce code est impossible à comprendre donc impossible à déboguer.
Oui oui c'est bien dans l'administration. Dossier wp-admin.

Sur les lignes qui suivent, une fois un if avec accolades, une fois sans, une fois l'utilisation des guillemets, une fois des côtes, les lignes suivants sont des aberrations.

Sérieusement, si on accepte de garder du code aussi pourri dans le coeur même de Wordpress, ne peut-on pas s'attendre au pire ?

La seule chose amusante en se balladant dans le code source, c'est qu'on peut presque voir le profil des développeurs : "tiens, là il y avait un bon", "tiens, là c'était un débutant", "tiens, là des gifles se perdent".
Avatar de psykokarl psykokarl - Membre confirmé https://www.developpez.com
le 02/03/2017 à 8:38
Isoler une ligne de code de son contexte la rend forcément incompréhensible pour ceux qui ont un peu de mal avec les raisonnements abstraits, même quand celle ci est extraite d'un "bon" code.

Je ne vois pas pourquoi l'opérateur ternaire devrait être utiliser avec parcimonie. C'est une structure simple qui tient sur une ligne et qui ne nécessite pas que l'on se ballade sur des dizaines de fichiers pour en comprendre l'utilité.
L'utilisation qui en est faite est peu orthodoxe de mon point de vue mais dans la mesure ou le code fonctionne il est évident qu'il s'agit d'un "if-else" sur une ligne de plus, allez comprendre pourquoi, les types qui conçoivent les tests d'embauche sont friand d'utilisation non orthodoxes de features... Le seul reproche que je pourrais faire à cette utilisation c'est que l'affectation de variable ne saute pas aux yeux quand on est pressé mais je tends à me concentrer assez vite sur les éléments de code qui posent problème et à négliger même les structures utilisée de façon classique. Sans regarder le reste du code (dois aller bosser), si d'aventure j'ai besoin de savoir à quoi sert la variable $sep qui l'affectation conditionnel à la valeur "|" m'indique qu'il s'agit probablement du $sep de "separator" probablement une construction de chaine qui compte, séparation présumée nécessaire quand la variable $i (incrément contextuelle ?) est égale à 2 ...
Avatar de cboulan cboulan - Candidat au Club https://www.developpez.com
le 02/03/2017 à 9:45
Bonjour,

La vulnérabilité de Wordpress est elle également effective pour une version du CMS plus ancienne que la 4.7 ou 4.7.1 (exemple 4.3.8) ?

Cordialement,
Avatar de SurferIX SurferIX - Membre chevronné https://www.developpez.com
le 02/03/2017 à 10:11
Citation Envoyé par psykokarl Voir le message
Isoler une ligne de code de son contexte la rend forcément incompréhensible pour ceux qui ont un peu de mal avec les raisonnements abstraits, même quand celle ci est extraite d'un "bon" code.
Je ne vois pas pourquoi l'opérateur ternaire devrait être utiliser avec parcimonie.
Euh t'es vraiment en train de dire que un ternaire dans un ternaire dans un ternaire c'est pas gênant pour comprendre un code ? Sérieusement ?

T'es vraiment le genre de personnes qui disent "ah bah allez, fumer une cigarette de temps en temps c'est pas grave rôooooooooh"...

Je suis peut être un peu extrémiste et comme je n'ai jamais fumé de ma vie (véridique, je ne fais jamais quelque chose juste "pour faire comme tout le monde" (90% des fumeurs le font)), j'ai tendance à me comporter pareil pour le code : un ternaire dans un ternaire dans un ternaire est incompréhensible, et si un type met ça comme code c'est forcément que ça ne le dérange pas d'avoir du bordel. Et forcément, le bordel, tout le monde en pâtit, tôt ou tard. Mais là non seulement je suis un peu extrémiste mais aussi vieux, et c'est mon expérience qui parle....
Avatar de Torotoro Torotoro - Nouveau membre du Club https://www.developpez.com
le 02/03/2017 à 11:39
@SurferIX : il n'y a qu'un seul ternaire dans cette chaîne, pas trois.
Et pour ma part, je comprend très bien la chaine, même sans avoir vu le code autour. Elle permet de ne pas afficher de séparateur suivant le compteur d'itération et l'action affichée ou demandée. Si tes étudiants ont du mal à comprendre cela, j'imagine le carnage quand tu abordes les expressions régulières ou les variables dynamiques.

La même chaîne avec des AND, OR et en remplaçant le seul opérateur ternaire
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
IF (
   (( 'approve' === $action OR 'unapprove' === $action ) AND 2 === $i )
   OR
   1 === $i
)
{
   $sep = '';
}
ELSE
{
   $sep = ' | ';
}
Bref, y'a rien d'incompréhensible.

Pour n'importe quel CMS du marché, si tu parcoures le code tu trouveras des différences dans la manière de programmer, c'est humain.
Avatar de talvins talvins - Membre habitué https://www.developpez.com
le 02/03/2017 à 19:01
Je ne vois effectivement pas du tout ce qu'il y a d'incompréhensible dans cette ligne. Et de savoir que c'est un "prof" qui dit ça, ça fait peur pour les étudiants !
Avatar de loutox loutox - Membre à l'essai https://www.developpez.com
le 02/03/2017 à 23:05
Salut, perso je trouve quand meme que c'est nettement plus lisible (et moins "je me la pête") sur douze lignes que sur une seule.

Quel interet à ecrire un code moins lisible ?
Avatar de psykokarl psykokarl - Membre confirmé https://www.developpez.com
le 02/03/2017 à 23:44
Citation Envoyé par SurferIX Voir le message
Je suis peut être un peu extrémiste et comme je n'ai jamais fumé de ma vie (véridique, je ne fais jamais quelque chose juste "pour faire comme tout le monde" (90% des fumeurs le font)), j'ai tendance à me comporter pareil pour le code : un ternaire dans un ternaire dans un ternaire est incompréhensible, et si un type met ça comme code c'est forcément que ça ne le dérange pas d'avoir du bordel. Et forcément, le bordel, tout le monde en pâtit, tôt ou tard. Mais là non seulement je suis un peu extrémiste mais aussi vieux, et c'est mon expérience qui parle....
Je n'ai jamais fumé non plus, même pour essayé
Il n’empêche que l'utilisation d'un opérateur ternaire de façon non orthodoxe n'est pas ce qu'il y a de plus compliqué à comprendre/maitriser. Même en prenant le cas capillotracté de la triple imbrication sans parenthèse, il suffira au pire d'indenter le code de façon à le rendre plus lisible.
L'utilisation dans cette même méthode d'une variable globale avec un nom aussi bateau tel "$comment_status" me fait beaucoup plus grincer des dents. Même en arrivant à comprendre son rôle je me dis qu'un effet de bord, vraiment dur à diagnostiquer pour le coup, est vite arrivé pour peu que l'on fasse une affectation malheureuse. Affectation qui pour le coup nécessite que l'on vérifie l'état de la variable pendant toute la durée de l’exécution.
Enfin bon je suis mauvaise langue "$comment_status" n'est pas un nom si générique que cela. Ce n'est pas comme si ils avaient utilisés des nom de variable globale comme "$comment" ou "$post" hein *remonte de quelques lignes* .

Vu que c'est bientôt trolldi je me demande si je ne vais pas créer un plugin wordpress gérant le traitement de requêtes http de façon asynchrone. Disons juste par curiosité et surtout histoire d'en faire un don désintéressé à la communauté !
Avatar de talvins talvins - Membre habitué https://www.developpez.com
le 03/03/2017 à 10:16
Citation Envoyé par loutox Voir le message
Salut, perso je trouve quand meme que c'est nettement plus lisible (et moins "je me la pête") sur douze lignes que sur une seule.

Quel interet à ecrire un code moins lisible ?
Tout dépend pour qui il est écrit. Quand tu lis du code depuis 10, 20, 30 ans, ce n'est pas moins lisible. Au contraire, parfois, c'est mieux d'être concis plutôt que de s'étaler sur 10 lignes bavarde et sans finesse particulière. Mais ceci n'est pas toujours vrai.
Avatar de dev14 dev14 - Membre averti https://www.developpez.com
le 03/03/2017 à 22:01
Il faut penser ressources avant confort visuel. Voir ce qui s'exécute le plus vite, c'est ce qui doit dicter les choix.
Avatar de loutox loutox - Membre à l'essai https://www.developpez.com
le 03/03/2017 à 22:24
Citation Envoyé par talvins Voir le message
Tout dépend pour qui il est écrit. Quand tu lis du code depuis 10, 20, 30 ans, ce n'est pas moins lisible. Au contraire, parfois, c'est mieux d'être concis plutôt que de s'étaler sur 10 lignes bavarde et sans finesse particulière. Mais ceci n'est pas toujours vrai.
Salut,
en fait je dirais que cela n'est pratiquement jamais vrai :
Le code est écrit pour faire le job et etre maintenu, et etre assimilé rapidement par celui qui le reprend.
Le code n'est pas écrit pour etre lu par des adeptes du "minified code".

Quand on est pro et pragmatique, la première des contraintes est très loin de déchiffrer du code façon freestyle-je-fais-tout-en-une-ligne (bien que cela puisse servir suivant derrière qui on passe...) .

Les contraintes d'efficacité font que l'énergie et l'intelligence doivent plutôt servir à se focaliser sur les vrais problèmes (modélisation, réalisation, bugs, améliorations ...) .

de plus l'évolution incessante des problématiques à résoudre (coté clients finaux) et des outils (langages/frameworks/architectures) fait que la finesse est justement d'anticiper les changements et d’améliorer la maintenabilité du code.

Et au niveau des perfs, un retour chariot n'augmente pas grandement la taille d'un fichier.

@+
Offres d'emploi IT
Expert décisionnel business intelligence H/F
Safran - Ile de France - Évry (91090)
Architecte électronique de puissance expérimenté H/F
Safran - Ile de France - Villaroche - Réau
Architecte sécurité des systèmes d'information embarqués H/F
Safran - Ile de France - 100 rue de Paris 91300 MASSY

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil