Jump to content

Mise à jour de sécurité pour PrestaShop


Recommended Posts

En raison d’un problème de sécurité dont nous avons été avertis, nous diffusons aujourd’hui plusieurs manières de sécuriser une boutique pour nos utilisateurs et partenaires :

  • Une nouvelle version de PrestaShop 1.4.x et 1.5.x. La version 1.6.1.0 est déjà sécurisée.
  • Le module Correctif de Sécurité (Security Patch) pour les branches 1.4, 1.5 et 1.6.
  • Des archives Zip contenant les fichiers modifiés pour les branches 1.4, 1.5 et 1.6.
  • Des fichiers de correctifs pour les dernières versions de chaque branche — 1.4.11.0, 1.5.6.2, and 1.6.0.14.

Nous vous conseillons fortement de mettre à jour votre boutique vers la dernière version de votre branche actuelle que nous venons de sortir (1.5.6.3 et 1.4.11.1), ou d’appliquer les correctifs que nous vous fournissons (voir les liens ci-dessous).

 

La version 1.5.6.3 corrige également 17 autres problèmes : voir le changelog ici.
La version 1.4.11.1 corrige également 17 autres problèmes : voir le changelog ici.

 

Veuillez lire cet article intégralement et attentivement. Merci.

  • Like 1
Link to comment
Share on other sites

Bonjour Xavier,

un peu debutant que je suis, je ne sais pas comment proceder pour installer le patch que j'ai bien téléchargé..

d'autre part j'ai vu que ce patch apparaissait dans les modules de mon backoffice, j'ai donc essayé de l'installer et j'ai eu comme reponse qu'il ne pouvait pas etre installé dans ma boutique.. je possede la version 1.6.0.9.. 

merci de votre reponse

Link to comment
Share on other sites

un peu debutant que je suis, je ne sais pas comment proceder pour installer le patch que j'ai bien téléchargé..

d'autre part j'ai vu que ce patch apparaissait dans les modules de mon backoffice, j'ai donc essayé de l'installer et j'ai eu comme reponse qu'il ne pouvait pas etre installé dans ma boutique.. je possede la version 1.6.0.9.. 

 

Effectivement, le correctif ne peut s'appliquer que sur la dernière version en date de chaque branche de PrestaShop -- donc dans votre cas, la 1.6.0.14. Idéalement, il vous faudrait donc d'abord mettre à jour vers la 1.6.0.14, puis appliquer le correctif (ou installer le module, qui fondamentalement ne fait qu'appliquer le correctif de manière plus accessible pour les utilisateurs qui ne veulent pas toucher à la technique).

 

Si vous ne voulez/pouvez pas mettre à jour par le biais du module 1-Click Upgrade/Mise à Jour en 1 Clic, Il va vous falloir toucher un peu à la technique, car l'application du correctif nécessite la modification de certains fichiers.

 

Tout est expliqué pas à pas ici : https://gist.github.com/xBorderie/15c48651e5c91ba0141f

Lisez bien l'article de bout en bout.

 

Pensez bien à faire une sauvegarde de vos fichiers originaux avant de les modifier, afin de pouvoir revenir en arrière en cas de problème !

Link to comment
Share on other sites

Bonjour

peut être pourrez vous me répondre, lorsque l'on fait une mise à jour par exemple de la 1.5.6.1 vers la 1.5.6.3, devont nous ensuite réappliquer toutes les petites modification apporté au site pour le personnaliser ?

 

cdlt

Link to comment
Share on other sites

peut être pourrez vous me répondre, lorsque l'on fait une mise à jour par exemple de la 1.5.6.1 vers la 1.5.6.3, devont nous ensuite réappliquer toutes les petites modification apporté au site pour le personnaliser ?

 

Non, pas la peine de réappliquer les modifications étant donné que la 1.5.6.3 contient déjà le correctif de sécurité.

Link to comment
Share on other sites

Bonjour,

 

Je re-poste aussi ici car apparemment ma question posée il y a quelques jours sur un autre de vos topics n'a pas succiter votre intérêt.

Je peux paraître un brin remonté contre vous mais il y a de quoi.

Et que le mode d'emploi façon Github c'est limite du made in china.

 

"Juste pour signaler que la mise à jour manuelle de sécurité disponible sur github pour la 1.4.11 a planté un de mes sites (encore) en version 1.4.3.

J'avais (heureusement) pensé à garder les anciens fichiers au cas où cette maj n'aurait pas fonctionnée.

J'aimerai que vous m'indiquiez de manière simple si possible où et quelles modifications ajouter pour cette version (d'origine) en 1.4.3 car cela commence à faire beaucoup de problèmes pour un correctif soi-disant "simple".

Je ne souhaite pas payer une agence pour faire ce genre de correctif qui, si il avait été prévu pour toutes les versions intermédiaires, n'aurait pas fait enfler la polémique.

Et comme votre module de mise-à-jour en 1 clic me fait penser au jeu de la roulette russe, n'y songeons pas.

Merci par avance pour votre réponse, qui aidera aussi sûrement des centaines ou milliers d'autres e-commerçants comme moi."

Link to comment
Share on other sites

bonjour

quelqu'un sait il comment adapter le correctif à la 1.5.6.1

comme le dis si bien N°6  un upgrade c'est jouer à la roulette russe !

j'ai une version qui est très stable et je n'ai aucune envie de tenter le diable avec une mise à jour qui ne va rien m'apporter.

à croire que tout à été fait par prestashop pour inciter à faire un upgrade avec toutes les conséquences que cela engendre

 

cdlt

Link to comment
Share on other sites

bonjour

quelqu'un sait il comment adapter le correctif à la 1.5.6.1

comme le dis si bien N°6  un upgrade c'est jouer à la roulette russe !

j'ai une version qui est très stable et je n'ai aucune envie de tenter le diable avec une mise à jour qui ne va rien m'apporter.

à croire que tout à été fait par prestashop pour inciter à faire un upgrade avec toutes les conséquences que cela engendre

 

cdlt

Pour votre cas, il suffit de remplacer ces 4 fichiers:

  1. controllers/front/PasswordController.php
  2. controllers/admin/AdminLoginController.php
  3. classes/Tools.php
  4. classes/Customer.php

disponibles dans cette archive: https://github.com/PrestaShop/PrestaShop-1.5/archive/f1ef8aa913ea013c42d9f2d702142caf031b4945.zip

 

Faites bien sûr une sauvegarde avant au cas où...

  • Like 2
Link to comment
Share on other sites

bonjour

merci eolia pour la réponse, les fichiers je dois les remplacer directement sur mon site, ou dans l'archive du correctif et ensuite l'appliquer ?

 

cdlt

Tu récupères les fichiers dans l'archive et tu remplaces ceux de ton site, c'est tout, le correctif est en place.

Link to comment
Share on other sites

Je n'ai pas encore regardé ce qu'il y a comme changements dans ce patch, mais proposer un patch pour chaque version récente en plus des dernières versions de chaque branche (au mois pour toutes les version 1.6) aurait été une bonne idée.

 

J'ai vu que ce problème venait du système de génération de mot de passe. Ça concerne donc l'accès au back-office. Si je mets en place un mot de passe par htaccess est-ce que cela permettrait d'éviter une utilisation de cette faille ? J'aimerais au moins faire ça pour dépanner, le temps de trouver le temps pour mettre à jour.

 

Si j'ai bien compris, passer sur la v1.6.1.0 comble aussi la faille ?

 

Merci

Link to comment
Share on other sites

Bonjour

 

J'ai installé une boutique il y a 7 mois à l'aide de PrestaSop 1.6.9

 

J'ai fait beaucoup de modifications "hard" de fichiers php pour adapter cette version à nos souhaits (ça fonctionne bien, merci).

 

J'ai donc reçu les infos pour faire cette mise à jour. Prudent, j'ai décidé de différer et de me renseigner. Et ce que je lis ne m'incite pas, mais pas du tout à faire cette MAJ, même si c'est une question de sécurité : pas envie du tout de planter ma boutique qui ne saurait fermer pour cause de maintenance.

 

Donc, statut quo pour l'instant.

 

PS : J'ai quand même été voir les procédures à appliquer et ça me parait plutôt nébuleux : pas moyens de faire plus simple ? Et faire un état des risques qu'on prend à l'appliquer ? Car même si mon hébergeur fait des sauvegardes journalières et que moi de mon coté en fait une particulièrement pour cette MAJ, pas envie de passer des nuits blanches, boutique fermée, à recoller les morceaux...

Link to comment
Share on other sites

Pour votre cas, il suffit de remplacer ces 4 fichiers:

  1. controllers/front/PasswordController.php
  2. controllers/admin/AdminLoginController.php
  3. classes/Tools.php
  4. classes/Customer.php

disponibles dans cette archive: https://github.com/PrestaShop/PrestaShop-1.5/archive/f1ef8aa913ea013c42d9f2d702142caf031b4945.zip

 

Faites bien sûr une sauvegarde avant au cas où...

Bonjour

merci pour cette aide précieuse, j'ais fais les modifs, je ne constate pas de problèmes. cela à l'air de bien se passer

cdlt

Link to comment
Share on other sites

Vous avez pris les bons ? (ceux prévus pour la 1.6.0.14) ?

Activez le mode debug en modifiant cette ligne au début du fichier config/defines.inc.php :
 
define('_PS_MODE_DEV_', false);
par
define('_PS_MODE_DEV_', true);
 
et réaffichez votre page
Link to comment
Share on other sites

Bonjour,

 

Désolé de casser votre discussion mais comme je n'ai pas obtenu de réponse aux miennes...

 

Est-ce que le fait de mettre un .htaccess sur l'admin pourrait bloquer temporairement la faille ou est-ce que cette faille compromet également la sécurité des comptes clients de la boutique sur le front ?

 

Comme certains sur ce topic, je ne suis pas en 1.6.0.14 et je regrette qu'il n'y ai pas de correctif pour les 1.6 antérieures car c'est assez complexe à mettre à jour quand on a fait du dev spé...

Link to comment
Share on other sites

Je viens de remettre les fichiers originaux mais plus rien ne marche!

 

Désactive ton cache smarty (tant qu'à faire) et supprime le fichier /cache/class_index.php va sur le frontend. Tu pourras ensuite réactiver ton cache smarty.

 

Ce fichier class_index.php n'aura pas fini de me faire c****. Il faut le supprimer à chaque fois qu'on fait une modif dans une classe. Il se regénère au premier chargement d'une page en Front. Il faudrait qu'on puisse le désactiver pour le dev... Efface ce fichier quand tu met le patch ou quand tu remets les fichiers originaux. Je pense qu'il serait bien d'ajouter cette info dans le tuto officiel...

 

Bref j'ai vite fait regardé les modifs à faire. Apparemment ça impacte aussi les comptes client en front donc je peux oublier mon htaccess pour le back-office :(

 

Quelqu'un a déjà appliqué le patch sur une version antérieure à 1.6.0.14 ???

Edited by makinero (see edit history)
Link to comment
Share on other sites

Bref j'ai vite fait regardé les modifs à faire. Apparemment ça impacte aussi les comptes client en front donc je peux oublier mon htaccess pour le back-office :(

De quoi parlez-vous ?

Le patch ne concerne que le problème de la regénération du mot de passe admin.

Un htaccess + htpasswd est tout à fait possible

Link to comment
Share on other sites

La faille de sécurité impacte le système de génération de mot de passe. Au début, je pensais que ça n'impactait que le back-office. Une protection par mot de passe htaccess aurait pu faire l'affaire. Même si un gugus s'amusait à utiliser cette faille pour changer un mot de passe, il aurait eu du mal à accéder au back-office.

 

Bref.

 

J'ai regardé en détail les modifs à faire. Apparemment, il devrait être possible de modifier les fichiers à la main pour les versions antérieures à 1.6.0.14 sans adapter le code spécifique à la version en suivant le tuto de la partie "Faites-le vous-même" (c'est juste le code de génération du mot de passe qui change un peu)  :

 

https://gist.github.com/xBorderie/15c48651e5c91ba0141f/6fcffc3bc37523235fa92a1a5276008ed3fed45c

 

ATTENTION : lisez bien les commentaires, ils ont oublié de dire des trucs (notamment le nom de la variable dans un "return" ainsi qu'une modification dans un fichier : j'ai comparé le tuto et les fichiers qu'ils donnent dans le ZIP pour la version 1.6.0.14 : il on oublié de parler d'un fichier...).

 

Franchement, vu les modifs qu'il y a à faire, ça n'aurait pas été la mort de mettre à disposition les fichiers patchés au moins pour toutes les versions 1.6 hein !!! :huh:

 

Ça aurait rendu service à pas mal de monde parce que là ceux qui ne sont pas en 1.6.0.14 doivent mettre à jour (avec tous les problèmes que ça peut engendrer) ou doivent avoir les compétences nécessaires pour modifier le code (même si on dit exactement ce qu'il faut faire, ce n'est pas donné à tout le monde. En l'occurence dans ce cas précis, il faut avoir des compétences de dev parce qu'en suivant les instructions, le code ne marcherait pas comme attendu, CF les commentaires sur github).

Link to comment
Share on other sites

Bonjour,

 

Je viens de tester de faire la mise à jour de sécurité en local sur une V 1.4.7.3 et une V 1.4.6.2 en échangeant les fichiers dispo dans patched_files_1.4.11.0.zip, mais j'ai une erreur 'voir plusieurs' de type :

 

Notice: Use of undefined constant _PS_SHOP_DOMAIN_ - assumed '_PS_SHOP_DOMAIN_' xxxxxxxxxxx \in \classes\Tools.php on line 228Notice: Use of undefined constant _PS_SHOP_DOMAIN_ - assumed '_PS_SHOP_DOMAIN_' in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\projects\ps\b_enligne1.4.7.3\classes\Tools.php on line 228

Notice: Use of undefined constant _PS_MB_STRING_ - assumed '_PS_MB_STRING_' in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\projects\ps\b_enligne1.4.7.3\classes\Tools.php on line 1265

 

etc.....

 

Est-il donc possible de faire la mise à  jour de sécurité sur ces versions de PS, car il m'est impossible de faire la mise à jour de mes 2 sites en 1.4.11 ?

 

Par avance merci.

Link to comment
Share on other sites

Bon alors soyons clair:

 

La modification porte sur la façon dont les nouveaux mots de passe seront générés.

 

La faille, (qui reste à prouver mais bon...) porte sur la régénération multiple du mot de passe ADMIN, en aucun cas on ne parle de piratage des comptes clients.

Le principe de la faille:

Le hacker connait l'adresse de votre BO (pas bien )

Le hacker connait l'adresse email associée à ce BO (déjà, si vous êtes dans ces 2 cas ça craint...)

Une fois sur la page de connexion il va lancer de multiples processus de régénération de mots de passe en cliquant sur "Mot de Passe oublié"

Ensuite, à l'aide d'un super-algorythme disponible sur le net, il en déduit le mot de passe et se connecte à votre BO.

Honnêtement impossible à réaliser en 5 mn, donc cela signifie déjà que vous ne consultez pas vos mails vous informant que votre mdp a été modifié.

 

Donc si vous mettez en place un htacces + htpasswd, le méchant hacker n'aura accès à rien du tout.

Cela n'impacte en rien les comptes clients. (Sauf si vous appliquez le patch, les nouveaux mdp seront générés différemment)

 

Après c'est vous qui voyez^^

Link to comment
Share on other sites

Bonjour,

 

Je viens de tester de faire la mise à jour de sécurité en local sur une V 1.4.7.3 et une V 1.4.6.2 en échangeant les fichiers dispo dans patched_files_1.4.11.0.zip, mais j'ai une erreur 'voir plusieurs' de type :

 

Notice: Use of undefined constant _PS_SHOP_DOMAIN_ - assumed '_PS_SHOP_DOMAIN_' xxxxxxxxxxx \in \classes\Tools.php on line 228Notice: Use of undefined constant _PS_SHOP_DOMAIN_ - assumed '_PS_SHOP_DOMAIN_' in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\projects\ps\b_enligne1.4.7.3\classes\Tools.php on line 228

Notice: Use of undefined constant _PS_MB_STRING_ - assumed '_PS_MB_STRING_' in C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\projects\ps\b_enligne1.4.7.3\classes\Tools.php on line 1265

 

etc.....

 

Est-il donc possible de faire la mise à  jour de sécurité sur ces versions de PS, car il m'est impossible de faire la mise à jour de mes 2 sites en 1.4.11 ?

 

Par avance merci.

Normal, dans ces version la notion de "shop" n'existait pas encore^^

Vous pouvez contourner ces 2 erreurs (mais vous en aurez peut-être d'autres avec ce patch) en ajoutant dans votre /config/define.inc.php en début de fichier (après la licence) :

define('_PS_SHOP_DOMAIN_', 1);
if (!defined('_PS_MB_STRING_'))
    define('_PS_MB_STRING_', function_exists('mb_strlen'));
Link to comment
Share on other sites

Moi perso je n'utiliserai pas des fichiers qui ne proviennent pas de ma version. Trop risqué (la preuve avec l'erreur) : des choses ont pu être ajoutées ou retirées.

 

@eolia : merci pour ces infos. Y a-t-il un tuto pour tester la faille et obtenir ce fameux algorithme ? Je ne vais pas m'amuser à pirater un boutique, c'est juste pour tester...

 

Bon sinon j'ai comparé les fichiers du ZIP et les instructions dans le tuto, j'ai encore trouvé des différences. A votre avis, à quel version de cloche faut-il se fier (ZIP ou tuto ?)

Link to comment
Share on other sites

Bonjour Eolia,

 

J'ai mis en place dans le fichier define.inc.php sur la V1.4.7.3, pas test sur l'autre version de PS pour le moment

 

les erreurs changent effectivement classes\Tools.php on line :

246

561

1834

Tu as mis le fichier Tools.php à jour ?

Quelles sont les erreurs ?

Link to comment
Share on other sites

zedcharly : n'utilise pas les fichiers fournis pour la 1.4, ce n'est pas la même version que ta boutique. Il faut appliquer le patch manuellement. Compare les fichiers d'une 1.4.11.0 qui n'a pas été corrigée avec les fichiers d'une 1.4.11.0 corrigée (ça risque d'être difficile à trouver vu qu'ils ont apparement mis à jour les versions téléchargeables, essaye sur le net comme par exemple sourceforge). Tu verras ainsi les modifications à effectuer sur ta version.

Link to comment
Share on other sites

Effectivement les fichiers utilisés sur ma V1.4.7.3 sont ceux de la version patched_files_1.4.11.0.zip pris sur la forge donc il ne correspondent donc pas à ma version.

Le fichier Tools.php est donc celui de 1.4.11.0

 

Je viens de lire en détails le lien de Eolia >Tiens un peu de lecture https://www.prestash...le-de-sécurité/

 

Suite à la lecture du sujet je viens de remettre les fichiers originaux de la V1.4.7.3 et viens d'appliquer la méthode de doeika

 

https://www.prestashop.com/forums/topic/458106-faille-de-s%C3%A9curit%C3%A9/page-2?do=findComment&comment=2111662

Link to comment
Share on other sites

  • 2 weeks later...

Effectivement les fichiers utilisés sur ma V1.4.7.3 sont ceux de la version patched_files_1.4.11.0.zip pris sur la forge donc il ne correspondent donc pas à ma version.

Le fichier Tools.php est donc celui de 1.4.11.0

 

Je viens de lire en détails le lien de Eolia >Tiens un peu de lecture https://www.prestash...le-de-sécurité/

 

Suite à la lecture du sujet je viens de remettre les fichiers originaux de la V1.4.7.3 et viens d'appliquer la méthode de doeika

 

https://www.prestashop.com/forums/topic/458106-faille-de-s%C3%A9curit%C3%A9/page-2?do=findComment&comment=2111662

 

Bonjour,

J'ai utilisé aussi la méthode de Doeika pour 1.4.6.2 mais fait j'ai deux trucs en plus : 

- modification du validate.php (car il faut a priori le faire pour les versions 1.4) :

 

public static function isPasswd($passwd, $size = 5)

{

return (strlen($passwd) >= $size && strlen($passwd) < 255);

}

 

- modification du controller passwordController.php avec ajout de 'RANDOM' au bout de cette ligne :

$customer->passwd = Tools::encrypt($password = Tools::passwdGen((int)MIN_PASSWD_LENGTH, 'RANDOM'));

 

A+,

Charlotte

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...