Dans le cadre du projet module de connexion à l'interpréteur PHP7, destiné à renforcer la sécurité de l'environnement et à bloquer les erreurs typiques conduisant à des vulnérabilités dans les applications PHP exécutées. Le module permet également de créer des correctifs virtuels pour résoudre des problèmes spécifiques sans modifier le code source des applications vulnérables, ce qui est pratique pour les systèmes d'hébergement de masse où il est impossible de maintenir toutes les applications utilisateur à jour. Le module est écrit en C, se connecte sous la forme d'une bibliothèque partagée (« extension=snuffleupagus.so » dans php.ini) et est sous licence LGPL 3.0.
Snuffleupagus fournit un système de règles permettant d'utiliser à la fois des modèles standard pour améliorer la protection et de créer des règles personnalisées pour contrôler les données d'entrée et les paramètres des fonctions. Par exemple, la règle « sp.disable_function.function(« system »).param(« command »).value_r(« [$|;&`\n] »).drop(); » permet de limiter l'utilisation de caractères spéciaux dans les arguments de la fonction system() sans modifier les applications. De même, il est possible de créer pour bloquer des vulnérabilités connues.
D'après les tests effectués par les développeurs, Snuffleupagus n'affecte quasiment pas les performances. Pour assurer sa sécurité (les vulnérabilités potentielles dans la couche de protection peuvent servir de vecteur d'attaque supplémentaire), le projet effectue des tests approfondis de chaque commit sur différentes distributions, utilise des systèmes d'analyse statique, et le code est structuré et documenté pour faciliter les audits.
Des méthodes intégrées sont fournies pour bloquer des classes de vulnérabilités telles que les problèmes, sérialisation des données, de la fonction PHP mail(), la fuite de contenu de Cookie lors d'attaques XSS, les problèmes dus au téléchargement de fichiers avec du code exécutable (par exemple, au format ), la génération de nombres aléatoires de mauvaise qualité et de constructions XML incorrectes.
Les modes de protection pris en charge par PHP comprennent :
- Activation automatique des drapeaux « secure » et « samesite » (protection contre les CSRF) pour les Cookies, des Cookies;
- Un ensemble de règles intégré pour détecter les traces d'attaques et de compromissions d'applications;
- Activation forcée du mode «» (par exemple, cela bloque la tentative de spécifier une chaîne lorsque l'on attend une valeur entière comme argument) et protection contre ;
- Blocage par défaut (par exemple, interdiction de « phar:// ») avec leur autorisation explicite sur liste blanche;
- Interdiction d'exécution des fichiers qui sont accessibles en écriture;
- Listes noires et blanches pour eval;
- Exigence de vérification des certificats TLS lors de l'utilisation de
curl; - Ajout d'HMAC aux objets sérialisés pour garantir que les données récupérées lors de la désérialisation proviennent de l'application d'origine.
- Mode de journalisation des requêtes.
- Blocage du chargement de fichiers externes dans libxml via des liens dans des documents XML.
- Possibilité de connecter des gestionnaires externes (upload_validation) pour vérifier et scanner les fichiers téléchargés.
Le projet a été créé et est utilisé pour protéger les utilisateurs au sein de l'infrastructure d'un des grands opérateurs d'hébergement français. , et il est évident que la simple connexion de Snuffleupagus permettrait de se protéger contre de nombreuses vulnérabilités dangereuses découvertes cette année dans Drupal, WordPress et phpBB. Les vulnérabilités dans Magento et Horde pourraient être bloquées en activant le mode
« sp.readonly_exec.enable() ».
Source : opennet.ru
