Audit de sécurité : 1 - Présentation
Lors de la livraison en production d'un de nos sites, notre client nous a fait savoir son intention de réaliser un "audit de sécurité" sur notre travail ainsi que notre hébergement.
Je me suis réjoui de cette initiative. Cela veut dire que notre client a conscience des risques liés au développement d'un site web. Et j'y ai vu une belle opportunité de remettre en question mon travail, notre travail.
Cela fait maintenant 8 ans que je développe des sites sous Drupal et je me suis dit que je devais sans doute avoir pris quelques mauvaises habitudes niveau sécurité. C'était donc une occasion de remettre mon travail en question.
La découverte et la correction des points soulevés par cet audit m'ont tellement passionné que j'ai décidé de vous les présenter ici.
Bien sur, pour des raisons de confidentialité, je ne pourrais pas rentrer dans les détails de cet audit, ni même donner le nom du site. Mais je vais essayer de vous présenter point par point les problématiques soulevées ainsi que leur résolution.
Voici la liste des points :
1. XSS Stored : exécution de code JavaScript
Cross-site scripting (XSS) est une attaque par injection de code JavaScript ou HTML. Elle permet d'exécuter du code malicieux dans le navigateur de la victime.
2. Énumération des paiements
Les confirmations de paiement sont libres d'accès, aucune authentification n'est nécessaire.
3. Énumération des utilisateurs
L'énumération des utilisateur est une technique utilisée par les acteurs malveillants pour identifier les noms d'utilisateur valides sur une application Web.
4.Fichiers inutiles au fonctionnement de la production
Lorsque l'on effectue des recherches d'url sur le site, il est possible de trouver de nombreux fichiers librement accessibles qui ne semblent n'avoir aucun rapport avec le fonctionnement du site en lui-même.
5. Fuite d'information : fichier de template
En inspectant le code source du site, certaines informations apparaissent telles que le nom des fichiers utilisés par le moteur de template.
6. CSRF : déconnexion utilisateur
7. En-têtes HTTP : Strict-Transport-Security
8. En-têtes HTTP : Content-Security-Policy
9. En-têtes HTTP : fuite d'information sur la version
10. Multiples vulnérabilités : CKEditor
11. Multiples vulnérabilités : PHPMailer
Illustration par Gerd Altmann de Pixabay