8
NBS System : Advisory sur la faille Magento / PayPal Le 19/04/2012 par Antonin le Faucheux Versions affectées : EE pré 1.10.1 et CE pré 1.5, site proposants PayPal Faille PayPal sous Magento ou comment faire ses achats (presque) gratuitement La faille se situe dans le module de paiement PayPal de Magento, sachant que les deux sociétés font partis du même groupe, c’est encore un peu plus étrange. Un de nos clients a été visé par la faille que nous allons détailler dans cet article. Heureusement, dans le cas de notre client, celuici procédait à des vérifications manuelles systématiques qui lui ont permis de déjouer l’attaque. Pourquoi publier un advisory sur cette faille, sachant que des personnes peu recommandables manient fort bien Google et vont finir par tomber dessus. La raison est simple : via diverses sources, nous savons que cette faille est activement exploitée depuis un certain temps et donc qu'elle représente bien une menace réelle. Les pirates sont donc déjà au courant mais pas les victimes. La faille a été remontée à Magento et est déjà corrigée dans les dernières versions (EE > 1.10.1 ou CE > 1.5). Hélas, Magento Inc. est adepte du « silent patching » qui se traduit en bon français par « corriger les problèmes de sécurité sans prévenir pour que nos clients continuent de croire que tout va bien ». Donc, même si la faille est corrigée, aucune publication officielle de Magento Inc. n’informera ses clients que cette faille existe et ne leur permettra de se prémunir. Le second, problème (et non des moindres) c’est que Magento Inc. ne fournira pas de correctif pour les versions antérieures ce qui veut dire qu’un grand nombre de boutiques sous Magento sont aujourd’hui vulnérables sans le savoir mais surtout, sans solution. Cet article vise à expliquer cette faille et à proposer une solution pour les possesseurs de sites vulnérables. La faille nous a été révélée par un de nos clients en version Enterprise à l’origine (qui ne souhaite pas voir son nom divulgué) et le correctif a été mis au point par l’agence DnD (www.dnd.fr).

Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

  • Upload
    lambao

  • View
    225

  • Download
    9

Embed Size (px)

Citation preview

Page 1: Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

                       NBS System : Advisory sur la faille Magento / PayPal                        Le 19/04/2012 par Antonin le Faucheux                        Versions affectées : EE pré 1.10.1 et CE pré 1.5, site proposants PayPal  

Faille PayPal sousMagento ou comment faire ses achats (presque)gratuitement 

La faille se situe dans le module de paiement PayPal de Magento, sachant que les deux sociétés font 

partis du même groupe, c’est encore un peu plus étrange. 

Un de nos clients a été visé par la faille que nous allons détailler dans cet article. Heureusement, dans 

le  cas  de  notre  client,  celui‐ci  procédait  à  des  vérifications manuelles  systématiques  qui  lui  ont 

permis de déjouer l’attaque. 

Pourquoi  publier  un  advisory  sur  cette  faille,  sachant  que  des  personnes  peu  recommandables 

manient fort bien Google et vont finir par tomber dessus. La raison est simple : via diverses sources, 

nous  savons  que  cette  faille  est  activement  exploitée  depuis  un  certain  temps  et  donc  qu'elle 

représente bien une menace réelle. Les pirates sont donc déjà au courant mais pas les victimes. 

 La faille a été remontée à Magento et est déjà corrigée dans les dernières versions (EE > 1.10.1 ou CE 

>  1.5).  Hélas, Magento  Inc.  est  adepte  du  « silent  patching »  qui  se  traduit  en  bon  français  par 

« corriger les problèmes de sécurité sans prévenir pour que nos clients continuent de croire que tout 

va  bien ».  Donc,  même  si  la  faille  est  corrigée,  aucune  publication  officielle  de  Magento  Inc. 

n’informera ses clients que cette faille existe et ne leur permettra de se prémunir. 

Le second, problème (et non des moindres) c’est que Magento Inc. ne fournira pas de correctif pour 

les  versions  antérieures  ce  qui  veut  dire  qu’un  grand  nombre  de  boutiques  sous Magento  sont 

aujourd’hui vulnérables sans le savoir mais surtout, sans solution. 

Cet  article  vise  à  expliquer  cette  faille  et  à  proposer  une  solution  pour  les  possesseurs  de  sites 

vulnérables. La faille nous a été révélée par un de nos clients en version Enterprise à l’origine (qui ne 

souhaite pas voir son nom divulgué) et le correctif a été mis au point par l’agence DnD (www.dnd.fr). 

 

   

Page 2: Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

                    

Exploitationdelafaille 

Étape1:LacommandeNous  voici  rendus  sur notre boutique Magento  favorite  afin de  réaliser un achat. Pour  l’exemple, 

nous allons acheter un seul article mais la faille reste exploitable avec plusieurs articles. 

 

Une  fois  notre  article  ajouté  au  panier  et  le  transporteur  choisi  nous  arrivons  à  un  total  TTC  de 

132,00€. 

 

 

 

 

Page 3: Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

                    Étape2:Interceptionetmodification 

Une fois la validation passée, nous choisissons de payer avec PayPal et validons la requête. A ce stade 

nous interceptons tout le trafic http et https passant par notre navigateur via le proxy Burp Suite afin 

de pouvoir visualiser et modifier les échanges entre celui‐ci et les serveurs Web. 

Nous interceptons notamment la requête suivante vers PayPal. 

 

Cette requête semble contenir un certain nombre d’informations mais la partie qui nous intéresse se 

situe à  la fin. En effet, on peut y distinguer  le prix de notre article 97,83 € HT,  la TVA et  les frais de 

livraison. 

 

 

Page 4: Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

                    Ces données étant envoyées depuis notre navigateur vers le site de PayPal, il  nous est possible de les 

modifier afin de tenter d’obtenir une « réduction ». 

 

Nous avons maintenant un article à 1,50€ TTC et une livraison à 0,50€ TTC qui qui nous donne un prix 

total TTC de 2,00€. Une réduction imbattable de plus de 98%... 

 

Aucune vérification d’intégrité des informations n’est faite par PayPal et les prix modifiées sont repris 

tels quels dans le récapitulatif de commande. 

   

Page 5: Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

                    Étape3:Profit 

A ce stade, il ne reste plus qu’à payer notre commande. 

 

De retour sur le site marchand, on nous confirme que notre commande à bien été payée. 

 

Le tableau de bord montre que la commande d’un  montant de 132€ est en cours de traitement. 

 

Le détail de notre commande reprend bien les montants du site et non le montant payé sur PayPal. Il 

n’est mentionné nulle part que nous n’avons déboursé que 2€ sur les 132€ que coutait cet article. 

Page 6: Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

                    Tout  site n’effectuant pas  la double vérification des versements  reçus  sur  le  compte PayPal avant 

envoie pourra être victime, cela est encore plus vrai pour  les très nombreux sites qui automatisent 

leurs envois. 

 

L’exploitation de cette faille est donc particulièrement triviale et est à  la portée de toute personne 

ayant des connaissances basiques en  informatique. Tout ça est très  intéressant me direz‐vous mais 

comment se protéger de cette faille ?  

 

Page 7: Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

                    

Patcherlafaille 

La  solution  est  celle  fournie  par  l’agence  de  développement  de  l’un  de  nos  clients  (Agence DnD, 

www.dnd.fr)  qui  a  travaillé  en  relation  avec  PayPal.  Il  s’agit  en  fait  de  chiffrer  et  de  signer  les 

informations  qui  vont  être  transférées  entre  PayPal  et  le  site marchand  afin  d’empêcher  toute 

modification par l’utilisateur. 

Une description générale de la protection est consultable sur le site PayPal : 

(https://cms.PayPal.com/fr/cgi‐bin/marketingweb?cmd=_render‐

content&fli=true&content_ID=developer/e_howto_html_encryptedwebpayments#id08A3I0P0B30) 

Étape1:Générationettéléchargementdelacléprivéeetcertificatpublic     

Vous pouvez générer le certificat en ligne de commande avec openssl ou alors vous rendre sur le site 

suivant  http://www.stellarwebsolutions.com/certificates/stellar_cert_builder.php    pour  générer  le 

certificat en ligne. 

 

La commande openssl ou le site vont vous générer un couple clé publique / clé privée. 

 

Placez les fichiers dans le répertoire lib/PayPal de votre installation Magento. 

PS : il est conseillé de  garder (ou d’ajouter) une partie aléatoire devant le nom de la clé privée afin 

d’éviter qu’un attaquant arrive à deviner  le nom de votre clé privée et arrive potentiellement à  la 

télécharger depuis son navigateur. 

Étape2:ConfigurationdePayPalpourutiliserlescertificats 

1. Connectez‐vous à votre compte PayPal. 

2. Allez dans l’onglet Profil.  

3. Dans la colonne Preferences Du Vendeur, cliquez sur  Certificats de paiement sur site marchand.  

Page 8: Faille Magento Paypal - NBS System · Exploitation de la faille Étape 1 : La commande Nous voici rendus sur notre boutique Magento favorite afin de réaliser un achat

                    4. Cliquez sur Ajouter.  

5. Cliquez sur Parcourir, et sélectionner votre certificat public (dans mon cas) 

"12345010577c235ac3b483a40518ghk‐pubcert.pem".  

6. Une fois votre certificat public mis en ligne avec succès, celui‐ci doit apparaitre dans la rubrique  

« Vos certificats Publics ».  

7. Notez le Cert ID, car vous en aurez besoin pour la suite. 

8. Téléchargez le cerficat public de PayPal           

Étape3:MiseenplacedescertificatsdansMagento 

1. Placez  le  certificat  public  de  PayPal  que  vous  venez  de  télécharger  dans  le  répertoire 

lib/PayPal de Magento. 

  

2. Editez le fichier  app/code/local/Mage/PayPal/Block/Standard/Redirect.php et ajouter le Cert 

ID récupéré sur le site de PayPal.  

Vérificationducorrectif 

Si  l’on tente de rejouer  l’attaque, on se rend compte que désormais  les  informations qui transitent 

vers PayPal sont chiffrées et ne sont plus modifiables par l’utilisateur.