mardi 7 avril 2009

Rien n'est laissé au hasard

Ceux qui m'ont déjà lu ou entendu savent que je ne manque jamais une occasion de dire que "PHP est la pire régression pour la sécurité depuis 10 ans"(tm).


Or un incident de sécurité est récemment survenu sur une installation de SPIP dans un laboratoire du CNRS. Cet incident, fort bien analysé dans la newsletter "Sécurité de l'Information", pourrait en rester au stade de l'anecdote. Mais à y regarder de plus près, il s'agit d'un exemple flagrant qui vient habilement illustrer cette thèse.

Car le problème vient tout simplement du fait que SPIP gère l'intégralité de sa configuration et des données de session dans un fichier texte à plat, accessible depuis la racine du serveur Web. On peut supposer que ce choix a été contraint techniquement par le manque de fonctionnalités des premières versions de l'interpréteur PHP ... je n'ose croire qu'il puisse s'agir d'un choix conscient et délibéré de la part des développeurs.

Le fichier en question s'appelle meta_cache.txt. Il est normalement protégé par un .htaccess, qui pour plein de bonnes et de mauvaises raisons ne fait évidemment pas toujours son office, comme une rapide recherche Google permet de s'en rendre compte.

Ce fichier contient une variable nommée alea_ephemere qui s'avère essentielle pour la sécurité des opérations sur le site (les détails sont dans la newsletter susmentionnée).

Accessoirement, ce fichier contient également une variable au nom intriguant: secret_du_site.

Une rapide recherche documentaire permet d'approcher (sans toutefois le comprendre) le rôle de cette variable:


A la lecture de cette documentation, la première chose qui me vient en tête c'est cette merveille du 7ème art ...

PS. De source orale, SPIP émule également le mécanisme bien connu des register_globals afin de contourner les configurations PHP un peu trop sécurisées.