Trou de sécurité MAJEUR trouvé dans Contao

Mise à jour de Contao, changements de code...
Avatar de l’utilisateur
KlausGrenoble
Membre
Messages : 261
Inscription : 27 Jan 2013 00:11
Localisation : Grenoble

Trou de sécurité MAJEUR trouvé dans Contao

Messagepar KlausGrenoble » 11 Fév 2014 12:38

Je fais un petit résumé de ce que j'ai compris:
Concernés sont seulement les sites web qui contiennent des formulaires.
https://community.contao.org/en/showthread.php?22385-Major-security-hole-found-in-Contao

https://community.contao.org/de/showthread.php?47723-Contao-3-2-5-verf%FCgbar&p=309435&viewfull=1#post309435
Die Sicherheitslücke kann verwendet werden um die localconfig.php zu überschreiben. Somit kann auch jeder beliebige PHP-Code ausgeführt werden.

Une attaque est possible en sorte qu'on puisse effacer et écrire dans la localconfig.php. Ceci permettrai d'exécuter n'importe quel code PHP.

2.11.14 et 2.3.5 corrigent ce problème pour le core contao:
https://community.contao.org/de/showthread.php?47724-Contao-2-11-14-verf%FCgbar
https://community.contao.org/de/showthread.php?47723-Contao-3-2-5-verf%FCgbar

Explications/Discussion sur ce trou de sécurité:
https://community.contao.org/de/showthread.php?47987-Schwere-Sicherheitsl%FCcke-in-Contao-gefunden

Remède général. Ceci est valable pour toutes les versions contao et est appliquable pour les cas ou on ne veut/peut pas mettre à jour jusqu'à la version 2.11.14/2.3.5:
https://contao.org/de/news/schwere-sicherheitsluecke-in-contao-gefunden.html
Cette page contient un lien sur github et les modifs à apporter manuellement dans les 17 fichiers (17 changed files with 33 additions and 25 deletions.)

Pour ceux qui refusent cette proposition, ont la possibilité de copier les fichier du patch de leur version concernée:
http://c-c-a.org/aktuelles/news/details/bugfixes-fuer-kritische-sicherheitsluecke-in-contao

Anwendungsbeispiele:
Fall 1: Wenn Ihr Contao 2.10.3 habt, dann solltet Ihr die Komplettinstallation von uns nehmen und damit direkt ein Update auf Contao 2.10.4 durchführen.
Fall 2: Ihr habt bereits die Version 2.10.4, dann müsst Ihr lediglich die jeweiligen Patch-Files per FTP in Eure Contao-Installation kopieren.

Examples:
cas no. 1:
Vous avez 2.10.3 ; alors vous devriez prendre la version complète 2.10.4 (ce qui correspond à une mise à jour à cette version 2.10.4).
Si vous voulez/devez garder la 2.10.3, il reste la solution des 17 fichiers à modifier.
cas no. 2:
Vous avez déjà la 2.10.4 ; alors il suffit d'appliquer le patch (seulement les fichiers concernées) et le copier dans votre installation contao.

Reste alors l'insécurité (probable) des extensions: Pour l'instant il n'y a rien à entreprendre (en cours d'études).
Klaus

EDIT: Concernés sont seulement les sites web qui contiennent des formulaires.

Avatar de l’utilisateur
tom-over
Membre
Messages : 829
Inscription : 23 Mai 2008 10:43
Localisation : Rouen

Re: Trou de sécurité MAJEUR trouvé dans Contao

Messagepar tom-over » 11 Fév 2014 16:03

Donc en modifiant à la main les pages listé dans le lien ci-dessous, on peut corriger le problème ?

J'ai encore des sites qui tournent en 2.9.3 :oops:

Avatar de l’utilisateur
KlausGrenoble
Membre
Messages : 261
Inscription : 27 Jan 2013 00:11
Localisation : Grenoble

Re: Trou de sécurité MAJEUR trouvé dans Contao

Messagepar KlausGrenoble » 11 Fév 2014 16:19

tom-over a écrit :Donc en modifiant à la main les pages listé dans le lien ci-dessous, on peut corriger le problème ?

Oui, les 17 fichiers
J'ai encore des sites qui tournent en 2.9.3 :oops:

Soit tu mets à 2.9.5 ou tu modifies les 17 fichiers d'une 2.9.3 et ensuite tu copies ce "patch" sur tes 63 sites Web.

Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

PHP Object Injection

Messagepar F2lt » 11 Fév 2014 17:06

Merci Klaus, :)

Voici quelques éléments que je viens de rassembler concernant ce type de faille de sécurité (PHP Object Injection) pour comprendre son fonctionnement :
- https://www.owasp.org/index.php/PHP_Object_Injection
- http://fr2.php.net/manual/fr/function.unserialize.php (Avertissement 2 dans les notes)
- http://www.php.net/manual/fr/language.o ... ect.wakeup

En résumé, on peut à travers les données envoyées dans un formulaire en POST "forcé" Contao (à l'insu de son plein gré :wink: ) à instancier (créer) l'objet linéarisé injecté dans les données des POST lors de la desérialsiation. Et exécuter automatiquement les "méthodes magiques" (__wakeup ou __destruct) définies pour la classe de l'objet. :cry:

Je n'ai pas encore fait de tests d'exploitation de la faille (juste pour voir), mais sur le code de la 2.9.5 que je viens de balayer il n'y a pas de méthode magique __wakeup :) mais des méthodes __destruct si :( ...
Donc, mise à jour fortement recommandée : http://c-c-a.org/aktuelles/news/details ... -in-contao

Encore un fois merci.
F2lt

PS : Le détail des fichiers modifiés pour la 2.9.11 : https://github.com/contao/core/commit/f ... 2febef1b37
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/

Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

Mise à jour 2.9.5 en SSH

Messagepar F2lt » 11 Fév 2014 18:40

Mise à jour (et nettoyage) en SSH pour la 2.9.5 qui donc peut être automatisé avec un script :

Code : Tout sélectionner

contao-installation> wget https://github.com/contao-community-alliance/contao-core-hotfix/archive/soa-2.9.5-patchset.zip
contao-installation> unzip soa-2.9.5-patchset.zip
contao-installation> cp -rv contao-core-hotfix-soa-2.9.5-patchset/* .
`contao-core-hotfix-soa-2.9.5-patchset/contao/install.php' -> `./contao/install.php'
`contao-core-hotfix-soa-2.9.5-patchset/system/constants.php' -> `./system/constants.php'
`contao-core-hotfix-soa-2.9.5-patchset/system/drivers/dc_folder.php' -> `./system/drivers/dc_folder.php'
`contao-core-hotfix-soa-2.9.5-patchset/system/drivers/dc_table.php' -> `./system/drivers/dc_table.php'
`contao-core-hotfix-soa-2.9.5-patchset/system/libraries/widget.php' -> `./system/libraries/widget.php'
`contao-core-hotfix-soa-2.9.5-patchset/system/modules/backend/optionwizard.php' -> `./system/modules/backend/optionwizard.php'
`contao-core-hotfix-soa-2.9.5-patchset/system/modules/frontend/formcheckbox.php' -> `./system/modules/frontend/formcheckbox.php'
`contao-core-hotfix-soa-2.9.5-patchset/system/modules/frontend/formselectmenu.php' -> `./system/modules/frontend/formselectmenu.php'
`contao-core-hotfix-soa-2.9.5-patchset/system/modules/rep_client/repositorymanager.php' -> `./system/modules/rep_client/repositorymanager.php'

contao-installation> cd contao-core-hotfix-soa-2.9.5-patchset/
contao-installation/contao-core-hotfix-soa-2.9.5-patchset> rm -R *
contao-installation/contao-core-hotfix-soa-2.9.5-patchset> cd ..
contao-installation> rmdir contao-core-hotfix-soa-2.9.5-patchset/
contao-installation> rm soa-2.9.5-patchset.zip
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/

Avatar de l’utilisateur
KlausGrenoble
Membre
Messages : 261
Inscription : 27 Jan 2013 00:11
Localisation : Grenoble

Re: Trou de sécurité MAJEUR trouvé dans Contao

Messagepar KlausGrenoble » 14 Fév 2014 21:56

https://community.contao.org/de/showthread.php?47987-Schwere-Sicherheitsl%FCcke-in-Contao-gefunden
Avec les versions 2.11.15/3.2.6 une solution a été trouvé qui couvre ce trou de sécurité venu à travers des extensions tiers.
Further harden the `deserialize()` function and the `Input` class (see #6724).

Disons presque, car un petit détail a encore été trouvé et résolu avec les versions 2.11.16/3.2.7:
Fix another weakness in the `Input` class and further harden the `deserialize()` function. Thanks to Martin Auswöger for his input.

Schönes Wochennende

Avatar de l’utilisateur
tom-over
Membre
Messages : 829
Inscription : 23 Mai 2008 10:43
Localisation : Rouen

Re: Trou de sécurité MAJEUR trouvé dans Contao

Messagepar tom-over » 17 Fév 2014 15:45

KlausGrenoble a écrit :Soit tu mets à 2.9.5 ou tu modifies les 17 fichiers d'une 2.9.3 et ensuite tu copies ce "patch" sur tes 63 sites Web.

Je copie quel patch ??

Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

Dernier Patch à jour ?

Messagepar F2lt » 17 Fév 2014 18:53

Bonjour Klaus,

Est-ce que la dernière modification de la fonction deserialize de contao (https://github.com/contao/core/compare/ ... ...2.11.16) a été intégrée dans les patchs de la page
http://c-c-a.org/aktuelles/news/details ... -in-contao ? Il ne me semble pas, mais je préfère faire confiance à ton allemand.

Contaoment :)
F2lt

PS : Si j'ai bien compris la modification de la 2.11.15, on empêche un attaquant :evil: de "cacher" l'objet injecté derrière une fin de chaîne fictive (\0)
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/

Avatar de l’utilisateur
KlausGrenoble
Membre
Messages : 261
Inscription : 27 Jan 2013 00:11
Localisation : Grenoble

Re: Trou de sécurité MAJEUR trouvé dans Contao

Messagepar KlausGrenoble » 17 Fév 2014 20:08

tom-over a écrit :
KlausGrenoble a écrit :Soit tu mets à 2.9.5 ou tu modifies les 17 fichiers d'une 2.9.3 et ensuite tu copies ce "patch" sur tes 63 sites Web.

Je copie quel patch ??

pour 2.9.3 ou 2.9.5 ?

Avatar de l’utilisateur
KlausGrenoble
Membre
Messages : 261
Inscription : 27 Jan 2013 00:11
Localisation : Grenoble

Re: Dernier Patch à jour ?

Messagepar KlausGrenoble » 17 Fév 2014 20:26

F2lt a écrit :Est-ce que la dernière modification de la fonction deserialize de contao (https://github.com/contao/core/compare/ ... ...2.11.16) a été intégrée dans les patchs de la page
http://c-c-a.org/aktuelles/news/details ... -in-contao ?

Non; ça prouve déjà la date de cette page (12.2.). La 2.11.17 arrivait un jour plus tard.

Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

Re: Protection 2.11.16 d'une 2.11.8

Messagepar F2lt » 03 Mars 2014 20:02

Bonjour,

Après analyse des évolutions du code des 2.11.14, 2.11.15, 2.11.16, il s’avère qu’il est possible de protéger la 2.11.8 (ou autre ?) en mettant à jour seulement 2 fichiers : :idea:
- remplacement de la classe system/libraries/Input.php par celui de la 2.11.16
- remplacement du code de la fonction deserialize() de system/functions.php par le code de la 2.11.16
et n'appliquant pas les multiples changements de la 2.11.14 mais uniquement ceux de la 2.11.16 qui empêchant la fonction de deserialize() d’injecter des objets.

Cette solution est maintenant en production depuis plus d'une semaine sur un site à trafic relativement important sans perturbation du fonctionnement de Contao. 8)

Contaoment :)
F2lt

- https://github.com/contao/core/compare/ ... ...2.11.16
- https://github.com/contao/core/compare/ ... ...2.11.14
- https://github.com/contao/core/compare/ ... ...2.11.16
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/


Revenir vers « Information »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité