lundi 9 septembre 2013

CVSS ou pas ?

Je suis actuellement sur une campagne de 15 pentests pour un client qui veut que l'on note chaque vulnérabilité avec un niveau CVSS. L'exercice est assez particulier et m'a fait perdre la foi dans cette métrique :)

Armé de mon petit calculateur de CVSS que j'ai développé en moins de 30 minutes en utilisant le manuel de référence, je m'en vais mettre des notes à mes vulns et là c'est la douche froide.
  • Comment noter une fonctionnalité dangeureuse comme le transfert automatique de message dans Exchange ?
  • Comment noter une faille dans un système d'authentification forte qui réduit alors l'authentification au seul mot de passe ?
  • Comment qualifier le fait qu'un utilisateur puisse accéder aux interfaces d'administration d'un serveur ?
  • Comment noter un bête XSS sur une applications interne ?
Il n'y a pas de réponse pour les 3 premiers points, mais on peut développer un peu sur le XSS.
  • Faut-il considérer l'attaque depuis le réseau (Internet) ou depuis un adjacent network ?
  • Est-ce que l'Access Complexity est élevé car nécessitant une phase d'ingénieurie sociale (phishing) ou moyenne car c'est un bête XSS sur un moteur de recherche ?
  • Avec un XSS on peut voler le cookie d'une personne et accéder à l'application avec ses droits. On peut altérer ses données. Avec le cookie d'un admin on peut supprimer la base de données. Sauf qu'on attaque personne par personne. Comment qualifier l'impact DIC de façon pertinente ?
Bref, je finis par faire discrètement à ma sauce pour obtenir le niveau de criticité que j'estime satisfaisant. Mais parfois on tombe sur une vulnérabilité connue qui remonte dans un scan Nessus et là on doit accepter la criticité définie par l'éditeur qui peut être surestimée par précaution (ou le contraire). Par exemple les failles sur HP SMH peuvent aller jusqu'à 9.0 alors qu'il faut déjà avec un compte utilisateur sur un application de management de serveurs... alors qu'un XSS sans authentification sur la même application n'atteint que 4,3 et au passage la complexité est moyenne alors qu'il faut faire de l'ingénieurie sociale et qu'au final on pourrait voler un compte admin et compromettre totalement le serveur.

Un peu comme je l'évoque pour le XSS, il existe des scénarios qui enchaînent les failles. Par exemple une interface admin accessible, un contournement d'authentification, une élévation de privilège et compromission totale du serveur. Et puis quoi ? Avec des si on mettrait Paris en bouteille.

Ce dont il faut bien se souvenir quand on utilise CVSS, c'est qu'on mesure la criticité d'une vulnérabilité, on ne mesure pas le risque. Est-ce que l'entreprise est grande, a beaucoup de concurrence, a une population technophile (SSII), qui aime assez peu sa société (mauvaise rémunération) ? CVSS n'en tient pas compte. C'est à l'auditeur de faire une analyse de risque et de faire ressortir ce qui est réellement critique dans le contexte de l'entreprise.