Drupal
22/11/2013

Sécurité - Owasp Drupal et le top-ten OWASP

image
L'OWASP est une organisation mondiale dont le but est de promouvoir la sécurité logicielle. Comment le CMS Drupal se positionne t-il par rapport à leurs différentes recommandations ?

L'OWASP est une organisation mondiale dont le but est de promouvoir la sécurité logicielle. Comment le CMS Drupal se positionne t-il par rapport à leurs différentes recommandations ?

Injections SQL

Depuis Drupal 6, l'API fournit une couche d'abstraction des accès à la base de données qui limite au maximum les injections SQL. Avec Drupal 7 et le passage de cette API en programmation orientée objet, il est très difficile pour un programmeur peu expérimenté de créer malencontreusement des failles de sécurités en injection.

L'API Drupal qui gère le système de fichier limite aussi où des fichiers peuvent être créés et altère les extensions de fichiers potentiellement dangereuses que le serveur pourrait exécuter.

Cross Site Scripting - XSS

Drupal possède un puissant système de filtrage des données générées par les utilisateurs pour affichage. Les balises dangereuses sont automatiquement supprimées.

Pour les développeurs, l'API dispose d'au moins 8 fonctions spécifiquement destinées au filtrage des données affichées pour prévenir les attaques XSS.
Par défaut les balises HTML sensibles sont échappées dès Drupal 7.

Authentification interrompue et gestion des sessions

Les comptes utilisateur et l'authentification sont pris en charge par le noyau (core) de Drupal. Les cookies d'authentification, les ID utilisateurs et les mots de passe sont gérés côté serveur pour empêcher les utilisateurs d'outrepasser leurs droits.

Les mots de passe utilisateurs sont salted et hashed par un algorithme basé sur le Portable PHP Password Hashing Framework et les sessions sont automatiquement détruites à chaque login / logout de l'utilisateur.

Accès non autorisé aux ressources

Drupal fournit des accès direct à ses ressources (ex : identifiants numériques pour les comptes utilisateurs ou le contenu disponible via une url ou un champ de formulaire).

L'utilisation directe de ses identifiants pourrait compromettre l'accès exclusif à certaines informations, mais Drupal dispose d'un puissant système de permissions et de contrôle d'accès qui prévient les requêtes directes non autorisées.

De plus de nombreux modules communautaires peuvent enrichir les ACL. l'API formulaire de Drupal limite aussi grandement les tentatives d'intrusions.

Cross Site Request Forgery - CSRF

Drupal valide les actions utilisateur en utilisant des standards de sécurités internationaux. Les actions ayant des répercutions côté serveur (comme la suppression d'une entrée en BDD) utilisent la méthode HTTP POST.

L'API formulaire de Drupal implémente un système de jetons "token" pour prévenir les CSRF lors d'une requête utilisant la méthode POST.

Failles de sécurité liées à une mauvaise configuration du CMS

Les fonctionnalités critiques comme l'accès aux outils administratifs du site sont limités par défaut au seul compte administrateur. Les problèmes de mauvaises configurations du CMS peuvent être identifiés par des tests utilisateurs.

Drupal fournit dans sa documentation officielle un ensemble de bonnes pratiques que nous suivons scrupuleusement : https://drupal.org/best-practices

Failles de restriction d'accès aux URL

L'accès aux URL est protégé par le système de permission du noyau de Drupal. Ce système gère également l'accés aux menus et à la navigation ce qui limite les incohérences et les failles provenant d'une mauvaise gestion utilisateur de ces derniers.
Ex : si un utilisateur n'a pas un accès en lecture à une URL, cette dernière n'apparaîtra pas dans sa navigation, même si la personne en charge de la création des menus l'a ajoutée.

Redirections URL invalides

Les redirections internes d'URL ne peuvent être exploités pour contourner le système de controle d'accès. Les failles liées au PHISHING sont limitées au maximum par l'API du noyau de Drupal depuis la version 6 et cela a été renforcé dans la V7.

Cryptage des contenus

L'encryptage des données dans Drupal utilise des fonctions PHP et depuis la V7, le Portable PHP Password Framework. La V7 autorise également l'ajout de méthodes d'encryption tierces si besoin.

SSL

Drupal utilise SSL mais la bonne configuration de cette couche de protection côté Serveur n'est pas de son ressort.

source : http://drupalsecurityreport.org/sites/drupalsecurityreport.org/files/drupal-security-white-paper-1-1.pdf

Ludovic Coullet, Bluedrop.fr
@lcoullet