Faille dans PHP < 5.3.1 – Comment patcher
Par Korben | Nb visites : 2 668

C’est John, fidèle lecteur de Korben.info qui m’a alerté de cette faille touchant toutes les versions de PHP < 5.3.1. L’exploit consiste à balancer un nombre important de fichiers en upload (+15 000), ce qui force PHP a créer autant de fichiers temporaires, le surchargeant jusqu’à ce que le serveur ne réponde plus. Et ne vous y trompez pas, même si vous n’avez pas de formulaire d’envoi de fichier sur votre site, la faille reste quand même exploitable.
Du coup, pour vous protéger, plusieurs solutions possibles (A vous de choisir) :
- Mettre la variable « file_uploads = Off » dans le php.ini, ce qui aura pour effet de désactiver complétement l’upload de fichiers
- Installer PHP >= 5.3.1, qui intègre un patch. Il suffit ensuite de limiter ce nombre d’upload simultannés à 20 par exemple grâce à la variable max_file_uploads dans php.ini
- Appliquer le patch Suhosin
Pour mettre en place le patch Suhosin, voici comment faire :
sudo apt-get install php5-suhosin
sudo nano /etc/php5/apache2/conf.d/suhosin.ini
et rajouter :
; configuration for php suhosin module
extension=suhosin.so
[suhosin]
suhosin.upload.max_uploads = 25
Relancez ensuite Apache et le tour est joué ! D’ailleurs, je vous recommande d’aller jeter un oeil sur le site de Suhosin pour voir tout ce que propose ce patch pour améliorer la sécurité sur votre serveur.
Encore merci à John pour avoir partager cette info avec nous. Vous aurez plus de détails en allant sur son site et ici.
[photo]
Je vous recommande aussi la lecture des sujets suivants
- Rajouter la coloration syntaxique à nano
- Faille JAR, un premier Proof of Concept vient de sortir
- Mettre en place un Reverse Proxy Nginx sur son serveur
- Comment cracker un mot de passe sous Linux ?
- Une nouvelle faille dans IE
- Plowshare – Télécharger en ligne de commande sur Megaupload, Rapidshare et d’autres…
- Liste des hebergeurs gratuits de fichiers Juin 2006
- Convertissez facilement vos fichiers musicaux avec Ubuntu
- Installer Adobe Air sous Ubuntu 64 bits
- Paramétrer le nettoyage automatique de /tmp







scotch
Bon ben j’avais pas que ça à faire mais c’est parti pour une upgrade
Posté le 24 novembre 2009 à 09:40:57
Amaury
Cooool, et sur un serveur mutualisé ?
C’est de la grosse faille là quand même :s
Posté le 24 novembre 2009 à 10:06:43
Albat
ça pourrait expliquer pourquoi la page de download de mon forum fait partie des plus vues…
Posté le 24 novembre 2009 à 10:31:43
Avish
Autre solution qui marche bien : apt-get remove apache
puis faire : apt-get install lighttpd
apache sa fait longtemps qu’il est mort et enterrer chez moi ^^
Posté le 24 novembre 2009 à 11:02:00
Korben
@Avish: ouais sauf que la, la faille est sur PHP, pas Apache…
Posté le 24 novembre 2009 à 11:07:04
liandri
Merci pour l’info,
Est-ce que ceci concerne aussi les serveurs gentoo release 2 d’ovh ?
Posté le 24 novembre 2009 à 11:20:13
John
liandri: La faille concerne toutes les versions de PHP < 5.3.1
Par rapport à :
et rajouter :
; configuration for php suhosin module
extension=suhosin.so
[suhosin]
suhosin.upload.max_uploads = 25
La directive par défaut c'est 25, donc si vous laissez à 25 vous pouvez laisser le ; devant la ligne, il loadera par défaut.
Par contre l'extension suhosin change pas mal de choses sur votre serveur, donc si vous avez des sites gourmand sur votre serveur de mutu, vous pouvez éditer la conf, genre directement dans le vhost ou dans un htaccess ajouter:
php_admin_value suhosin.upload.max_uploads 50
php_admin_value suhosin.post.max_vars 10000
php_admin_value suhosin.request.max_vars 10000
Et pour les zones « protégées » ultra gourmandes, genre backoffice de cochon:
php_flag suhosin.simulation On
Ca vous désactivera suhosin dans le rep.
Posté le 24 novembre 2009 à 11:24:18
Korben
@liandri: oui
Posté le 24 novembre 2009 à 11:27:32
lte
« Et ne vous y trompez pas, même si vous n’avez pas de formulaire d’envoi de fichier sur votre site, la faille reste quand même exploitable »
ah ?
Posté le 24 novembre 2009 à 11:31:20
Julien
Je crois bien que sur une Debian Lenny on a le patch Suhosin d’origine (mais j’ai la flemme d’aller vérifier).
C’est comme le GRSEC pour la noyau : au début j’aimais pas trop, et finalement ça se rend utile de temps en temps
Posté le 24 novembre 2009 à 11:31:39
Avish
@Korben:
Ouai juste mais la config de l’upload et comment le serveur gère les processus est différent. J’aimerais bien tester si il plante mais ils donnent pas le code perl…
@Julien:
Après avoir contrôler sur mon serveur, il vient pas d’office.
Posté le 24 novembre 2009 à 11:46:13
Armetiz
Personnellement, je n’ai pas réussi à la faire fonctionner
Même avec 1 500 000 fichiers envoyés, rien ne plante. Enfin, j’ai une augmentation du temps de réponse de <1ms à 50ms, mais rien de bien méchant.
Mon attaque de Kévin ne doit pas être bien rodée :p
Posté le 24 novembre 2009 à 11:47:59
frankoi
@Julien:
c’est pas le cas,
j’ai checké sur ma lenny
Posté le 24 novembre 2009 à 11:54:42
Avish
Ah tiens voila le code sur le site :
http://blog.madpowah.org/archives/2009/11/index.html#e2009-11-22T13_08_00.txt
Posté le 24 novembre 2009 à 11:57:36
cloud
@Armetiz, tiens j’avais codé le sploit ce week end : http://blog.madpowah.org/archives/2009/11/index.html#e2009-11-22T13_08_00.txt .
Avec 80 requêtes, ca commence à bien lagger ou à couper surtout quand tu as des connexions mysql dans les scripts. Apparemment les systèmes commencent à vraiment crasher au bout de 2 500 000 fichiers envoyés.
@Albat : Attention en aucun cas cela n’a un rapport avec une page d’upload. C’est du au fait que quand tu envoies des multipart/form-data, le serveur web via php crée en local des fichiers temporaires. Du coup au bout d’un moment, il a du mal à traiter
PS : ah Avish tu as été plus rapide à 4s prêt :p Merci pour le lien vers mon blog
Posté le 24 novembre 2009 à 11:57:40
cloud
@Julien @frankoi : Attention le patch Suhosin ne protège en rien ! C’est le Suhosin PHP extension qui protège de cette vulnérabilité, ce n’est pas la même chose et beaucoup confondent
Posté le 24 novembre 2009 à 12:02:41
Avish
@cloud:
Par contre vulnérabilité pas encore confirmé sur lighttpd ^^ avec 13000 et ton script mon serveur bronche pas.
Posté le 24 novembre 2009 à 12:05:45
cloud
@Avish: Merci
Test bien d’ouvrir un code php genre un forum sur ton serveur car j’ai constaté en testant sur un serveur avec du contenu statique (même si PHP est présent) que cela ne bronchait pas.
J’avais testé sur un lighttpd aussi sans réussite.
J’ai testé également sur un Apache protégé par un RP (mod_security2) et la ca marche quand même.
Posté le 24 novembre 2009 à 12:12:48
Sebastien
Ca explique surement pourquoi de nombreux sites que je visite quotidiennement sont totalement down.
Ajaxian.com par exemple,
ou les centaines de milliers de site heberges sur dreamhost.com…
J’ai l’impression qu’on se dirige sur un crash majeur la… la faille est tres facilement exploitable et le temps que chaque administrateur patch son php…
Posté le 24 novembre 2009 à 12:29:18
Korben
@Sebastien: Effectivement, ça a l’air d’être l’hécatombe là . En ce qui me concerne, c’est patché !
Posté le 24 novembre 2009 à 12:33:42
Colin
Outch c’est la tuile.
Merci pour l’information, Ã transmettre de toute urgence.
Posté le 24 novembre 2009 à 12:36:03
Albat
et du coup, pour patcher un serveur mutualisé, on attend que l’hébergeur le fasse ou on peut se débrouiller tout seul ?
Posté le 24 novembre 2009 à 12:51:04
Avish
@Albat:
Tu téléphones au support…
Posté le 24 novembre 2009 à 12:53:16
Avish
@cloud:
J’ai même tester avec un script d’upload sur le serveur… aucun résultat.
@Korben:
Donc je confirme lighttpd n’est pas vulnérable même si c’est php qui l’est.
Vive lighttpd \o/ Ã mort Apache
Posté le 24 novembre 2009 à 13:10:52
Korben
@Avish: Avish 1 – Korben 0
Tant mieux alors pour les lighttpd fan… et sur nginx, on a des resultats ?
Posté le 24 novembre 2009 à 13:27:27
TomA
C’est étrange… Sur mon Ubuntu 9.04 avec LAMP et PHP 5.2.6, j’ai l’impression que je l’ai déjà :
Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.2 with Suhosin-Patch Server at localhost Port 80
Je n’ai pourtant installé que apache2, mysql-server et php5…
Posté le 24 novembre 2009 à 19:36:14
Faille détectée dans PHP < 5.3.1 « Blog Web-Petit
[...] : Korben.info et John-Jean.com (très détaillé). Partagez-le sur del.icio.usPubliez-le sur MySpacePartagez-le [...]
Posté le 24 novembre 2009 à 21:26:30
John
@TomA & les autres: Suhosin Patch != Suhosin extension.
@avish: Perso le script en python fonctionnait pas terrible chez moi. Je me suis codé mon propre exploit en PHP, il fait du 100% de réussite pour le moment (sauf si extension). Si je peux tester sur un lighttpd je suis preneur.
@cloud: le script que j’ai fait semble fonctionner même si php sort du contenu statique.
Posté le 24 novembre 2009 à 22:21:14
phiphi
@John: Salut John, c’est possible d’avoir ton script PHP ?
Posté le 25 novembre 2009 à 09:51:35
Avish
@John:
Je testerai bien ton script John.
Tu le rends disponible ?
@Korben:
merci mais c’est pas le but d’avoir raison. Pis je dirais Lighttpd 1 – Apache 0
C’est surtout pour faire de la pub à lighttpd ^^ je trouve qu’il marche vraiment bien, que se sois à la configuration, la vitesse, etc.
Posté le 25 novembre 2009 à 09:52:23
John
@Avish & @phiphi: je préfère pour le moment tester sur des hosts genre lighttpd voir si c’est OK. Si vous avez un serveur de dev qui peut (hypothétiquement), se faire remplir le /tmp, je suis interessé.
Posté le 25 novembre 2009 à 11:13:36
phiphi
@John: ok, malheureusement j’ai seulement des servers de dev en local avec apache
Posté le 25 novembre 2009 à 11:24:53
Christian Nganzi
Mercie korben
Posté le 25 novembre 2009 à 16:07:38
Avish
@John:
Mon serveur est sous lighttpd, mais pas trop envie de balancer l’adresse ici… pas envie de me faire flooder
Dommage qu’on ne puisse pas envoyer un message privé à un utilisateur.
++
Posté le 25 novembre 2009 à 17:03:20
Nico
Si quelqu’un veut tester contre http://tl.byme.at/p.php
LB haproxy qui sort sur du lighttpd
Posté le 27 novembre 2009 à 00:56:20
Lecture de la semaine #10 | DevZone - Zone de développement web
[...] Sécurité PHP : Korben qui via John nous révele une faille dans PHP < 5.3.1. Bien heureusement, il nous indique comment la corriger Faille dans PHP < 5.3.1 – Comment patcher [...]
Posté le 27 novembre 2009 à 17:00:28