fév 24

Aïe, comme une prémonition, le post du 23/02 sur la sécurité se trouve malheureusement très adapté à la situation :
3 failles de sécurité de type XSS, cross site scripting, viennent d’être révélées sur Security Focus ce jour à propos de Magento v1.2.0.

Numéro CVE :
CVE-2009-0541
Numéro Bugtraq : 33872

En effet, trois failles de sécurité de type XSS (voir post du 23/02/2009 sur la sécurité) sont présentes dans Magento 1.2.0 et probablement dans les précédentes versions également. La primauté de cette découverte revient à Loukas Kalenderidis de Sens Of Security. Du coup, je me dis que ca vaudrait le coup de passer un test un peu en profondeur à la chasse d’autres XSS, sait on jamais. De toute façon, le « Web 2.0″ c’est une mine en terme de sécurité, si ca vous intéresse, ici, un article que j’ai publié il y a quelques années dans Hackin9 à ce sujet (il n’y a pas tout, notamment l’anti DNS pinning n’y est pas de mémoire, mais ce sont de bonnes bases).

Pas de panique, la très grande majorité de Magento repose sur Zend qui est un Framework solide donc on ne devrait pas en avoir des tonnes d’autres mais il va falloir être vigilant. De plus Varien a été prévenu par l’auteur de ces 3 failles le 21/01/2009. Yoav (Directeur Technique de Varien) a probablement lancé la chasse dans le reste du code mais Gabriel de Fragento nous indique que sur une 1.2.1.1 il a repéré le même XSS comme fonctionnel (voir commentaire). Le problème ne serait donc pas résolu malgré le fait que Sens Of Security a joué dans les normes visiblement, l’éditeur à été prévenu un mois avant la publication, ce qui semble un délai raisonnable.

Voila ce qui arrive quand on développe en dehors du framework Zend ou que l’on ne contrôle pas assez ses retours d’erreurs… Les risques de ce type, les XSS, principalement sur l’admin du backoffice, sont non négligeables.

Actions à mener rapidement

  1. Upgradez votre Magento ! Dès qu’une version corrigée sera disponible. Pour le moment, la dernière c’est la 1.2.1.1 au moment de la rédaction de ce billet, c’est donc une montée de version mineure si vous êtes déjà en 1.2.x, donc pas ou peu de problème (si vous n’avez pas codé dans le Core). Par contre si vous êtes en pré 1.2, ça risque d’être un peu plus sportif. De toute façon la version actuelle ne semble pas régler tout le problème.
  2. Mettez le bout de conf apache qui est en bas dans le fichier de virtualhost de votre site (ou faite le faire à votre hébergeur). Ça protégera votre backoffice, XSS ou pas.
  3. Sinon, vous pourrez prochainement appliquer le correctif logiciel qui nous sera fournit par Gabriel de Fragento

Les failles en elles mêmes

Vulnérabilité 1, page de login d’administration

Quand vous ratez un login, la valeur que vous allez entrer dans le champ « nom d’utilisateur » va être renvoyé à l’utilisateur sans encodage de la réponse :

  1. Allez sur la page d’administration (http://monmagento/index.php/admin ou quelque chose du genre si il y a un rewriting ou une autre racine du site, bref le /admin quoi)
  2. Entrez dans le champs « nom d’utilisateur » : « ><script>alert(123)</script>
    (attention, le blog est susceptible d’encoder les caractères spéciaux, il faut donc le taper « à la main », le copier/coller ne marchera peut être pas)
  3. Entez n’importe quoi dans le champ « mot de passe »
  4. Cliquez sur « Identifiant » et roohhhhh, une boite javascript qui vous confirme que le code dans le champ a été renvoyé sans encodage et donc exécuté par votre navigateur…

(j’ai également vérifié sur une version 1.0.x et ca marche donc il y a de grande chance que toutes les versions entre 1.0.x et 1.2.0 soient vulnérables)

Vulnérabilité 2, page « J’ai oublié mon mot de passe »

(déjà dans le principe, si tu oublie ton mot de passe admin du nackoffice, on se demande s’il est raisonnable que tu es accès à ce genre de fonction…)

  1. on se rend sur http://monmagento/index.php/admin/index/forgotpassword
  2. Dans la case email on met : « ><script>alert(123)</script>
    (attention, le blog est susceptible d’encoder les caractères spéciaux, il faut donc le taper « à la main », le copier/coller ne marchera peut être pas)
  3. on clique sur « retrieve password » et hop, une boite javascript qui annonce qu’on est vulnérable

Allez, quand on a un filon on le lâche pas,

Vulnérabilité 3, page « Magento Connect Downloader »

Là c’est directement dans l’URL qu’on peut encoder le XSS :
http://monmagento/downloader/?return=%22%3Cscript%3Ealert(123)%3C/script%3E
(attention, le blog est susceptible d’encoder les caractères spéciaux, il faut donc le taper « à la main », le copier/coller ne marchera peut être pas)
et vous connaissez l’histoire de la boite javascript tout ça tout ça…

Bon, allez je vous laisse, j’ai des clients à prévenir qu’il faut upgrader leurs Magento ;)

Conclusion, comme d’habitude : la sécurité à un coût mais elle n’a pas de prix !

Les correctifs ont été déplacés dans un post dédié : ICI

écrit par Philippe Humeau \\ tags: , ,


16 commentaires sur “Alerte : 3 failles de sécurité XSS dans Magento !”

  1. 1. Gabriel - Fragento Dit :

    Eh ben… Je confirme la faille en 1.1.8 ;o

    Pour tester bien s’assurer d’avoir un guillemet  » (le blog met en forme le caractère), pareil pour l’apostrophe.

  2. 2. Laurent Bourrel Dit :

    Cette faille me fait réagi sur un point…

    Est-il raisonnable d’avoir accès à l’interface d’administration de façon publique ? Question sécurité, j’aurais déjà tendance à blinder ce côté là (limitation par ip pour commencer).

  3. 3. Philippe Humeau Dit :

    Je suis bien de ton avis Laurent… Personnellement je protège toujours l’admin de tous types de sites avec un .htaccess :) Cependant, les XSS c’est dommage, le fait que ce soit sur le manque de filtrage des erreurs c’est un classique, moins dangereux, mais un classique quand même.

  4. 4. Gabriel - Fragento Dit :

    http://demo-admin.magentocommerce.com/index.php/admin/

    L’admin de démo est en 1.2.1.1 et pourtant la faille est toujours présente.

  5. 5. Gabriel - Fragento Dit :

    Garanti sans montage :

    http://img12.imageshack.us/img12/4579/magentoxss.jpg

  6. 6. Priscillia Bigorgne Dit :

    Rien à voir avec le problème remonté, mais cette page n’est pas complètement visible sous IE7 (http://www.wikigento.com/?p=406 : coupé à partir de l’étape 1).

  7. 7. Philippe Humeau Dit :

    Je viens de corriger le problème. Un truc un peu bizarre de l’éditeur qui se comporte pas du tout pareil sous IE7 et FF3 :( Mais il était utile de toute façon de faire un article à part : http://www.wikigento.com/?p=458

  8. 8. Les XSS comment ca marche ! | Communauté Magento francophone Dit :

    [...] failles Magento, on risque quoi plus précisément ? Pour les  deux premières présentées dans cet article, pas grand-chose. Disons que le risque est présent mais que l’exploitation est complexe car [...]

  9. 9. lolo888 Dit :

    intéressant tout ça, merci pour ces infos…

    A mon plus grand étonnement, je viens de regarder la notes de la nouvelle mise à jour de la version 1.2.1.1, et aucune mention en rapport à ce problème, et sous le backoffice, cette mise à jour est considérée comme mineur 8)

    Et je ne sais pas si je suis le seul, mais après test de cette mise à jour à partir du sample-data.1.2.0, j’ai toujours un bug sur le javascript (sur le zoom des produits), le script permettant cela n’est même pas chargé… ?

    Et pour les solutions pourquoi ne pas rajouter aussi le répertoire /downloader avec un .htaccess ?

  10. 10. lolo888 Dit :

    Autant pour moi pour le /downloader je ne voyais que l’étape 1 (FF 2.0)

  11. 11. Philippe Humeau Dit :

    oui, j’ai eu la même info par une navigatrice sous IE7…? C’est bizarre ces soucis de présentations cross browsers, je vais jeter un œil.

  12. 12. tedece Dit :

    Je viens de tomber sur ce site et je crois que je vais revenir pour prendre des cours de sécurisation de site Magento.

    Donc à bientôt !

  13. 13. Philippe Humeau Dit :

    :) merci ! Cependant, je ne voudrais pas décevoir les lecteurs mais ce blog sera beaucoup plus dédié à Magento sous un aspect optimisation que sécurité. L’actualité et d’indécrottables réflexes m’ont fait faire un petit à coté mais pour la sécurité, peut être que le responsable du labo chez nous montera un blog similaire dédié à ces sujets.

  14. 14. Nicolas | Boutik-Circus Dit :

    A noter que le changement de chemin d’admin corrige 2 des 3 failles, plus celles-là qui vient d’être publié (et qui permet en autre d’effacer votre catalogue en 5min – testé en local):
    http://artisansystem.com/blog/entry/33

  15. 15. Gabriiiel Dit :

    Le billet sur http://artisansystem.com/blog/entry/33 était intéressant mais l’auteur l’a retiré.

    Pour une bonne raison : il a étalé l’info sans même prévenir auparavant la Core Team… et a présenté de plates excuses par la suite ;p

  16. 16. lolo888 Dit :

    ça semble être résolu dans la version 1.2.1.2

Poster une réponse