Suhosin
Suhosin (ìížì en CorĂ©en, prononcĂ© en corĂ©en : [suÉŠoÉin], signifiant « ange gardien ») est un patch open source pour PHP, ainsi qu'une extension pour ce dernier, Ă©crit par l'entreprise allemande Sektion Eins[1]. Le patch et l'extension sont deux parties distinctes, pouvant ĂȘtre utilisĂ©es ensemble ou sĂ©parĂ©ment. « Le but de Suhosin est d'ĂȘtre un filet de sĂ©curitĂ© protĂ©geant les serveurs contre les mauvaise pratiques de code au niveau de PHP. »[2]
Créateur | Stefan Esser |
---|---|
PremiĂšre version | |
DerniĂšre version | 0.9.38 () |
DĂ©pĂŽt | GitHub |
Ătat du projet | Inactif |
Ăcrit en | C |
Environnement | PHP |
Licence | Licence PHP |
Site web | https://suhosin.org |
Suhosin rĂ©duit Ă©galement la surface d'attaque prĂ©sentĂ©e par PHP, via un systĂšme de liste blanche pour les fonctions pouvant ĂȘtre appelĂ©es, des limites en termes de ressources, du chiffrement transparent de cookies de session, du filtrage de contenu binaire, de la journalisation[3]âŠ, minimisant ainsi les risques liĂ©s au dĂ©ploiement de code PHP dangereux, et protĂ©geant d'attaques connues et inconnues.
Fonctionnalités
Le patch contient des techniques de durcissement visant Ă empĂȘcher les attaques par corruption mĂ©moire, qui ne sont pas prĂ©sentes dans le module. La plupart d'entre elles ont toutefois Ă©tĂ© intĂ©grĂ©es directement dans PHP.
- Chiffrement des cookies : afin de protĂ©ger des attaques de type XSS visant Ă voler des cookies, ces derniers sont chiffrĂ©s avec une clef dĂ©rivĂ©e du user-agent ainsi que d'une partie de l'adresses IP de l'utilisateur. Ce qui empĂȘche un attaquant d'utiliser des cookies dĂ©robĂ©s, ceux-ci ne se dĂ©chiffrant pas correctement avec son adresse IP.
- Protection contre les inclusions arbitraires : les fichiers envoyĂ©s, ainsi que les fichiers distants ne peuvent pas ĂȘtre inclus, rendant plus difficile l'exploitation de Remote File Inclusion.
- DĂ©sactivation de vecteurs courants dâexĂ©cution de code arbitraire : le mot clef
eval
n'Ă©tant pas une fonction en PHP, il ne peut ĂȘtre dĂ©sactivĂ© via la directivedisable_function
. Suhosin ajoute cette possibilité, tout comme celle de désactiver le modificateur/e
de la fonctionpreg_replace
, lui aussi frĂ©quemment utilisĂ© Ă des fins malveillantes. - Protection contre des boucles infinies : PHP possĂšde un comportement documentĂ© (et acceptĂ©) entraĂźnant une erreur de segmentation en cas de rĂ©cursion infinie. Cette erreur Ă©tant due Ă une corruption mĂ©moire, Suhosin va plutĂŽt arrĂȘter lâexĂ©cution dĂšs qu'un certain niveau de profondeur dans la pile d'exĂ©cution est atteint.
- Liste noire et liste blanche de fonctions : la directive
disabled_function
de PHP n'est pas vraiment granulaire, c'est pourquoi Suhosin fournit un mĂ©canisme permettant dâautoriser ou d'interdire des fonctions, globalement, par virtual-host, ou encore par dossiers. - Liste noire de noms de variables suspects : Suhosin peut interdire des variables dans les zones GET, POST, COOKIE contenant des noms rĂ©servĂ©s, comme GLOBALS, _COOKIE, _ENV, _FILES, _GET, _POSTâŠ
- Durcissement des envois de fichiers : Suhosin permet d'appeler un script arbitraire lors de l'envoi de fichiers, permettant ainsi d'y adjoindre, par exemple, un anti-virus. Cette fonctionnalitĂ© peut Ă©galement servir Ă empĂȘcher l'envoi de fichiers ELF, ou de binaires.
- Lancement d'actions arbitraires en cas de dĂ©tection dâĂ©ventements : blocage de variables, envoi de code de rĂ©ponse http spĂ©cifiques, d'une redirection, ou encore exĂ©cuter un script PHP particulier.
- Journalisation dĂ©taillĂ©e : il est possible, via Suhosin, de loguer un grand nombre de dĂ©tails en cas dâĂ©ventements, le nom du fichier, le numĂ©ro de ligne, l'adresse IP du clientâŠ
Distribution
Le module ainsi que le patch furent inclus dans plusieurs distributions Linux , notamment Debian jusquâĂ sa version 6.x (Squeeze), et fut rĂ©intĂ©grĂ© plus tard[4], ou encore dans Gentoo Hardened. Il Ă©tait Ă©galement activĂ© sur la version serveur de Mac OS X.
Ă partir de PHP5.4, openSuse arrĂȘta de supporter le patch, mais continue son support du module[5].
FreeBSD maintient Ă©galement le module dans sa collection de ports.
Développement et héritiers
La premiĂšre version de Suhosin sortit en 2006[6], et supportait PHP 5.2.0. La derniĂšre version du patch fut publiĂ©e quelques mois aprĂšs la sortie du module. Le dernier article publiĂ© sur le site officiel date de 2007[6], et le dĂ©veloppement du mode sâarrĂȘta de Ă . Ce qui poussa certaines distributions Ă considĂ©rer le projet comme inactif, jusqu'Ă ce que la communautĂ© prenne le relai, aux alentours de 2014[7]. Il n'est actuellement pas prĂ©vu[8] de pousser dans PHP les fonctionnalitĂ©s de Suhosin.
En , suhosin7 vit le jour[9], afin de proposer des fonctionnalitĂ©s Ă©quivalentes pour PHP 7.x, mais n'a pour l'instant pas rencontrĂ© d'engouement[10]. Le projet Snuffleupagus vise Ă en ĂȘtre le successeur moderne, pour PHP 7 et au-delĂ .
Voir aussi
- phpMyAdmin, qui utilise Suhosin
Références
- (en) « Frequently Asked Questions », sur SUHOSIN, (consulté le ).
- Chapter 13, Securing PHP Web Applications by Tricia Ballad; William Ballad Publisher: Addison-Wesley Professional, Web (ISBN 978-0-321-57431-2)
- Official Feature List
- Overview of package php5-suhosin in Debian sid
- Mailinglist Archive: opensuse-factory (418 mails)
- « Hardened-PHP Project - PHP Security - News », sur hardened-php.net (consulté le )
- (en) « sektioneins/suhosin », sur GitHub (consulté le )
- « 'Re: [PHP-DEV] Suhosin patch disabled by default in Debian php5 builds' - MARC », sur marc.info (consulté le )
- (en) « first commit · sektioneins/suhosin7@aee7faf », sur GitHub (consulté le )
- (en) « sektioneins/suhosin7 », sur GitHub (consulté le )