Après un an de développement lancement du projet , fournissant un module pour l'interpréteur PHP7 afin d'améliorer la sécurité de l'environnement et de bloquer les erreurs typiques qui peuvent entraîner des vulnérabilités dans les applications PHP exécutées. Le module permet également de créer pour résoudre des problèmes spécifiques sans modifier les textes sources de l'application vulnérable, ce qui est pratique pour les systèmes de mass hosting où il est impossible de maintenir toutes les applications utilisateur à jour. Les surcoûts liés à l'utilisation du module sont estimés comme minimaux. Le module est écrit en C, se connecte sous forme de 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 qui permet d'utiliser à la fois des modèles standards pour améliorer la sécurité et de créer des règles personnalisées pour le contrôle des données d'entrée et des paramètres des fonctions. Par exemple, la règle « sp.disable_function.function(« system »).param(« command »).value_r(« [$|;&`\n] »).drop(); » permet, sans modifier l'application, de restreindre l'utilisation de caractères spéciaux dans les arguments de la fonction system(). Des méthodes intégrées sont fournies pour bloquer des classes de vulnérabilités telles que les problèmes liés à la 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.
Modes de renforcement de la sécurité PHP fournis par Snuffleupagus :
- 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.
Parmi Dans cette nouvelle version : Amélioration de la prise en charge de PHP 7.4 et compatibilité avec la branche de PHP 8 en développement. Ajout d'une fonctionnalité de journalisation des événements via syslog (la directive sp.log_media est proposée pour l'activer, acceptant les valeurs php ou syslog). Mise à jour de l'ensemble de règles par défaut pour inclure de nouvelles règles concernant les vulnérabilités et techniques d'attaque récemment découvertes sur les applications web. Amélioration de la prise en charge de macOS et élargissement de l'utilisation de la plateforme d'intégration continue basée sur GitLab.
Source : opennet.ru
