• # Détails sur les 2 dernières vulnérabilités PHP, méthodes de développement

    Posté par (site web personnel) . En réponse à la dépêche État d'insécurité chez PHP. Évalué à 10.

    Il y a quelques mois était publiée la version 5.3.7 de PHP, sans s'assurer que certains bugs critiques, comme celui de la fonction crypt(), avaient été corrigés.

    Euh non, il n'y avait pas de bug. La fonction a été modifié suite à un avertissement d'un outil d'analyse statique, modification faite par l'auteur du langage et censé améliorer la sécurité. Plus d'info sur cette vulnérabilité :
    https://plus.google.com/111631720833482085895/posts/G3pKmqn4VFZ

    Au sujet de la faille introduite par un correctif de l'attaque par déni de service de la table de hachage (PHP 5.3.9), j'ai également écrit sur un bref article :
    https://plus.google.com/111631720833482085895/posts/dJ7RyRSj31f

    Ce n'est pas Stefan Esser qui a trouvé la faille 20 jours après PHP 5.3.9, mais masugata qui a rapporté le bug 1 jour après PHP 5.3.9. Par contre, sûrement que quand Stefan rapporte un bug, il fait plus de bruit et donc les développeurs sont plus pressés de corriger le bug.


    Contribuant à Python, je suis étonné des méthodes de travail des développeurs PHP. Ils n'écrivent pas ou peu de test, et à l'époque de PHP 5.3.7, il y avait 200 tests qui ne passaient pas, et pourtant ils ont publié une nouvelle version. Pour le correction pour le DoS (hash), je doute qu'un test ait été écrit vu que le correctif ne corrigeait pas la faille (dumoins, pas tous les cas). Pour le correctif du correctif, je ne vois pas non plus de test de non-régression. Là il y a 82 tests qui ne passent pas sur PHP 5.3, 86 tests sur PHP 5.4, et 104 sur HEAD. C'est beaucoup mieux !

    À côté de ça, ça plusieurs semaines qu'un débat enflammé a lieu sur la liste de diffusion et le bug tracker Python pour choisir le meilleur correctif pour le même bug (DoS sur la table de hash). Je me dis que ce débat n'est pas si inutile : relire un patch à plusieurs permet d'avoir un meilleur code, même si la moindre modification prend plus de temps.

    Python est blindé niveau tests et gare à celui qui pête un des 70 buildbots ! Pour Python 3.3, la majorité des buildbots sont verts, mis à part bugs connus et rapportés, pour les autres versions, buildbot est plus instable.