Une faille PHP permet d’exécuter du code via WordPress
Le 21 août 2018 à 10h20
2 min
Internet
Internet
À la conférence Black Hat USA début août, le chercheur Sam Thomas a révélé une vulnérabilité ouvrant un large champ de possibilités. Elle réside dans la désérialisation de PHP, destinée à décoder des données, qui permet aussi d'initialiser des classes PHP via une chaine de caractères.
Elle concerne notamment Wordpress, le CMS le plus utilisé dans le monde. L'attaque consiste à créer une archive PHP (Phar), dont on change les 100 premiers octets pour obtenir un fichier JPEG valide. Ce dernier est ensuite mis en ligne sur un blog Wordpress, avec les identifiants d'un utilisateur.
La fonction de Wordpress qui génère les vignettes est ensuite appelée. En tentant de décoder le contenu de cette fausse image (en réalité un fichier Phar), elle exécute les potentiels appels vers les classes PHP présentes dans le logiciel.
La mise en ligne du faux fichier JPEG nécessite d'avoir les droits d'édition sur le blog Wordpress, ce qui passe par un compte Auteur (ou supérieur), dont il faut obtenir les identifiants.
La vulnérabilité a été signalée en février 2017, via la plateforme HackerOne. Elle ne serait pas encore corrigée.
D'autres CMS sont concernés, dont Typo3. Avertis le 9 juin, les développeurs ont rapidement comblé la faille dans les versions 7.6.30, 8.7.17 et 9.3, publiées trois jours plus tard. Pour The Register, le risque n'est pas si élevé que suggéré. La compromission complète du système ne serait pas envisageable par ce biais.
Le 21 août 2018 à 10h20
Commentaires (12)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 21/08/2018 à 09h31
Faille PHP ou faille WordPress ?
Le 21/08/2018 à 09h45
Le 21/08/2018 à 09h55
En fervent non-utilisateur de Wordpress, la question que je me pose, c’est surtout : Est-ce que ça concerne les sites “faits mains” ?
Le 21/08/2018 à 10h08
Quel langage de merde sérieux… continuer à le développer c’est vraiment mettre du maquillage sur un cochon.
Et wordpress n’arrange rien, c’est une plateforme dans le même état d’esprit, hétérogène, fouillie, lourde, avec plein de failles découvertes chaque mois.
Un beau combo. Ceux qui continue a s’en servir sont soit forcés de le faire, soit n’ont jamais daigné essayé utiliser autre chose pour faire du web (Node, python, ruby, go, les options sont nombreuses).
Le 21/08/2018 à 11h25
@Antwan, soit tout simplement on a l’époque passé du temps à apprendre à maîtriser ce langage, et pour maintenir et conserver de grosses réalisations, et par ce qu’on a autre chose à faire, on continuer à utiliser cela.
Quand j’ai débuté en PHP, aucun de tes langages (excepté python) n’existaient, ils n’ont commencé à apparaître que 10⁄15 ans plus tard.
Et vu que maintenant je ne fais plus justement que de maintenir des sites crées il y a longtemps ou justement installer quelques wordpress (car je sais faire pour les retravailler), je n’ai ni le temps, ni l’envie de recommencer tout sur un autre langage, et surtout pour entendre dans 10 ans un petit jeune me dire qu’ils sont nuls et qu’il y a mieux " />
Le 21/08/2018 à 11h30
Ou peut-être que plein de failles sont trouvées justement parce que c’est le CMS le plus utilisé au monde ? Si ça se trouve, plusieurs autres CMS “sérieux” ont tout autant de failles ou plus encore, mais on ne le sait pas " />
Ah et sans oublier les extensions, grosses sources de vulnérabilités (ce qui n’est pas propre à Wordpress) !
Le 21/08/2018 à 12h12
Vu comment fonctionne la désérialisation, elle ne doit pas être utilisée avec une entrée utilisateur (c’est pareil en Java par exemple). Il faut l’implémenter soi-même par exemple en JSON, ce qui en plus rend les données portables si on veut porter l’application dans un autre langage sans perdre de données (donc les sessions de PHP ne sont pas biens non plus évidemment).
Le 21/08/2018 à 12h51
Si tu “faits mains”, tu dois avoir les compétences pour prendre en charge la sécurité de ton code. Plus de détail lahttps://cdn2.hubspot.net/hubfs/3853213/us-18-Thomas-It’s-A-PHP-Unserializati…
Le 21/08/2018 à 13h15
Le 22/08/2018 à 14h20
@Daweb
Classique illustration de ta situation. " />
@skankhunt42
Les autres python/go/ruby ont aussi foison de librairies et documentation et permettent de développer bien plus rapidement et efficacement que PHP. Cet argument ne tient pas vraiment, il est typique de ceux qui ne sont pas vraiment penchés sur des langages modernes.
@nextinpact
SVP fixez le crash de commentaire impossible a poster quand vous citez une réponse, c’est exaspérant de perdre tout un message…
Le 22/08/2018 à 14h36
@Antwan… Heu non pas du tout. Justement le peu que je fais encore me prend 5 minutes. Le truc si tu veux comparer, c’est que j’ai quasiment rien à transporter, juste quelques kilo, et la roue ne me servirait à rien dans mon cas.
avec l’expérience j’ai appris que bien souvent on peut perdre du temps en pensant en gagner (linverse étant vrai aussi " />)
Maintenant, si tu me paye 6 mois de salaires pour prendre un salarié pour tenir ma boite, promis je passe les 6 mois à apprendre les langages modernes :)
Le 24/08/2018 à 20h56
Mouais y’a pas vraiment de comparaisons possibles entre WordPress et d’autres CMS en terme d’écosystème de plugin (même drupal). On trouve tout, tout le temps. Ça rend accessible beaucoup de choses simplement et à tout le monde. Certes il faut faire un tri, mais le choix est énorme. Ça dépend largement du besoin client finalement. Pour un petit site vitrine, institutionnel, e-commerce leger, la question ne se pose pas, partir “from scratch” c’est se tirer une balle dans le pied.
Après PHP on aime ou pas, quand on sait coder proprement, avec un framework adapté ça reste un outil sur lequel on peut pérenniser, et ou la communauté est énorme. Il y a certes des alternatives intéressantes pour qui veut se lancer, mais ce n’est pas une nécessité.
Après on peut critiquer la sécurité de WordPress, avec plus de 30% de parts de marché globale, ce n’est pas étonnant qu’il soit la cible privilégiée. C’est un peu comme dire Mac c’est plus sécurisé que Windows… Quand on est pas une cible, on ne trouve pas de faille.
Bref, je suis d’accord que c’est assez fun d’essayer d’autres langages, framework etc… De là à dire que PHP c’est de la merde, et qu’il faut tout faire à la main, c’est manquer cruellement de recul…