Cet article est le 5ème de notre série dédiée à la compréhension des vulnérabilités web, et ne nécessitant pas de bagage technique fort.
Nous parlerons aujourd’hui de “Mauvaise configuration de sécurité”. Cette catégorie de failles peut sembler assez générique, et c’est d’ailleurs le cas puisqu’elle englobe différentes sortes de vulnérabilités. Cependant, toutes sont liées au même problème: un manque de contrôle et de maintenance sur l’environnement qui entoure l’application web.
Ce type de faille est classé numéro 5 sur l’OWASP Top 10 2013 (sous le nom “Security Misconfiguration« ), ce qui en fait donc un des 10 éléments sur lesquels les développeurs d’application doivent s’attarder afin de garantir une sécurité web optimale.

Illustration - trou de sécurité

L’objectif de cette série d’articles étant de ne pas rentrer dans de trop nombreux détails techniques, nous essayerons de rester assez générique. Ce qui doit être tout d’abord gardé à l’esprit est le fait qu’un site internet ne fonctionne pas de lui même, mais repose sur de nombreux composants nécessaires à son fonctionnement.
De multiples “couches” permettent à l’application web de fonctionner, de l’infrastructure réseau, aux librairies utilisées pour construire l’application:

  • Couche réseau (tous les composants qui permettent au site web d’être accessible par le monde entier, ou pas)
  • Couche serveur (la machine elle-même qui héberge le site)
  • Couche Système d’Exploitation (Windows, Linux…)
  • Couche applicative (serveur microsoft IIS, Apache… le composant logiciel qui fait tourner votre site internet)
  • Couche de librairies (du code prêt à être utiliser, utilisé par les développeurs pour construire l’application web)
  • Le site web lui-même

Toutes ces couches ont leur propres paramètres de sécurité, et leurs potentielles vulnérabilités.

Par exemple, les comptes par défaut, présents dans de nombreux composants qu’il s’agisse de bases de données, ou de serveurs web, sont très dangereux. De nombreux comptes par défaut utilisant “administrator” comme login, et “password” comme mot de passe sont encore aujourd’hui fournis avec des logiciels ou serveurs et doivent absolument être supprimés lors de l’installation de ces composants dans votre environnement web.
Un autre exemple simple est l’affichage des contenus des dossiers (directory listing), qui permet à n’importe qui de lister les fichiers présents dans un dossier donnée, comme par exemple dans le dossier racine de votre site web, rendant accessible le code source de l’application, ou d’autre éléments.

Quelles en sont les conséquences ?

Si votre application web souffre de tels trous de sécurité, les conséquences peuvent être assez sévères, suivant la nature de votre site web et en fonction de la faille elle-même.
Généralement, les attaques donnent accès aux pirates à des données que vous ne souhaitez pas divulguer, ou à des fonctionnalités non autorisées. Cela peut également donner lieu à une compromission totale du système, laissant l’attaquant faire ce que bon lui semble sur vos serveurs (voler la base de données, changer des règles business, installer des malwares, éteindre votre site ou le supprimer…)

Que faire pour éviter ces vulnérabilités ?

1. Un bon niveau de sécurité commence dans une architecture web qui assure une bonne séparation des différents composants de l’application (base de données, serveur d’applications…)

2. Adopter des procédés automatisés ou répétables pour mettre en place un nouvel environnement web, ou ajouter des serveurs. Utiliser des checklists peut aussi être une bonne pratique. L’objectif est de s’assurer que la mise en place de nouveaux serveurs ou composants n’introduira pas de vulnérabilité.
Dans tous les case, ces procédés, process, checklist devront être maintenus et revus par une vraie équipe comprenant des architectes matériels, réseaux et logiciels. Travailler seul sur un tel mécanisme n’est clairement pas une bonne idée.

3. S’assurer que vous avez une politique de maintenance solide est également un point clé pour la sécurité web. Correctement mettre en place des serveurs et des application ne sera pas suffisant si vous ne les mettez pas à jour régulièrement. Systèmes d’exploitation, firmware, le langage de programmation lui-même (tel que PHP)… tous ces éléments doivent être maintenus à jours afin d’être certain que les nouvelles failles de sécurité (rendues publiques) ne seront pas exploitées sur votre système.
Vous avez très probablement entendu parlé de la vulnérabilité “Heartbleed”. Les pirates ont commencé à exploiter massivement cette faille dès que cette dernière a été rendue publique (et certain avant qu’elle le soit). Mettre à jour la librairie “Open SSL” est une des étapes nécessaires afin d’éviter l’exploitation de la vulnérabilité. Si vous ne le faites pas, votre site, s’il utilise Open SSL, sera vulnérable à une attaque sur les données que vous aurez tenté de protéger avec SSL.

4. Effectuer un audit de sécurité, test d’intrusion d’application web est également critique, afin d’être certain que rien n’a été oublié et obtenir la confirmation que la plateforme est suffisamment sécurisée!
Contactez-nous pour plus d’information à ce sujet, VAADATA fourni des services de tests d’intrusion web.

Ces failles n’affectent pas seulement les environnements de production. Tout autre environnement est concerné, comme les environnements de tests qualité (QA), préproduction, staging, recette… Ces plateformes doivent être correctement gérées afin d’éviter que des attaques soient réalisées.

Autres articles dans cette série :