lundi 28 septembre 2015

You only have one job

Je pense vivre actuellement l'audit le plus médiocre de ma carrière. Je réalise actuellement un audit pour le compte d'un responsable risques qui veut qu'on fasse son boulot à sa place.

En gros on a fait l'audit et découvert un certain nombre de vulnérabilités. D'habitude on s'arrête-là. Sauf qu'ici, il faut qu'on aille revoir chaque acteur pour lui demander le niveau de criticité de la faille, si le risque doit être traité, si c'est déjà dans un plan d'action et sinon quelle charge de travail ça représente. C'est intéressant, mais là le périmètre est une énorme infrastructure donc on a une équipe sécurité, une équipe réseau, des développeurs (web, mobile et API), des responsables d'équipe, des MOA, des exploitants, des correspondants sécurité, des RSSI et chacun se renvoie la balle.

Notre cher client nous indique que tant qu'on ne fait pas une boucle on doit suivre les pistes. Après 34 entretiens réalisés sans compter qu'il faut au moins appeler 3 fois pour avoir la personne et qu'en général ce n'est pas la bonne personne, c'est usant.

J'en suis venu à l'idée saugrenue de cacher des vulnérabilités de faible et moyenne importance pour éviter la chasse au responsable. Donc en gros, cher Client, fais ton boulot, je fais le mien et tu auras de meilleurs résultats parce que j'ai autre chose à faire que de passer les 3 quarts de ma charge à tenter de joindre les mauvaises personnes. Et un gros merci au junior qui souffre avec moi :)

mardi 22 septembre 2015

L'illusion du score d'un pentest

"If you can not measure it, you can not improve it." Cette citation de Lord Kelvin a beaucoup de sens en sécurité et est la base des tableaux de bord. Pourtant j'ai du mal à trouver comment l'appliquer dans le cadre des tests d'intrusion.

J'imagine qu'il faudrait trouver ce qui est quantitatif et qualitatif dans le résultat de l'audit pour pouvoir réaliser une mesure, mais un audit n'est pas et n'a pas vocation à être exhaustif, ce qui implique que la quantité peut varier, notamment avec l'expérience de l'auditeur et le nombre de jours disponibles. L'objectif  d'un test d'intrusion est d'aller le plus en profondeur possible (p0wner le serveur, le réseau, le contrôleur de domaine), alors quand on trouve une injection SQL on va passer du temps dessus. Puis on a autre chose de plus intéressant à mettre dans le rapport que d'indiquer que la méthode TRACE est acceptée. Et pourtant c'est exactement ça qui va biaiser notre calcul car on n'aura pas une base cohérente entre les audits... Au passage, un camembert de répartition des failles par criticité n'a aucune valeur d'une part parce que la base est incohérente et d'autre part une appli avec 4 vuln critiques et 4 faibles ne devrait pas ressortir de la même façon qu'avec 1 critique et une faible.

Ensuite pour le qualitatif si on revient encore sur notre méthode TRACE, on peut trouver des discussions sur le sujet http://www.securityfocus.com/archive/107/533982/30/30/threaded avec des références à rapid7 (CVE à 6). Du côté de Qualys, c'est très inconsistant :



Toutes les failles n'ont pas non plus un CVE et pour régulièrement qualifier des failles avec un score CVE, c'est très dépendant de la personne qui définit les niveaux. Ça ne prend pas non plus en compte le fait qu'il y est 5 ou 1000 utilisateurs.

Bref, donner une note à un audit autrement qu'au pif semble impossible. Récemment j'ai croisé le projet CCWAPSS (Common Criteria Web Application Security Scoring) qui vise à changer la logique de calcul pour s'appuyer sur la chaine "applicative" :
  • Authentication
  • Authorization
  • User’s Input Sanitization
  • Error Handling and Information leakage 
  • Password/PIN Complexity 
  • User’s data confidentiality 
  • Session mechanism 
  • Communication security 
  • Patch management 
  • Administration interfaces 
  • Third-Party services exposure 
Pour chaque critère on indique s'il y a une faille, si c'est correct ou si c'est au niveau des "best practices". Ce qui nous refait tomber dans un biais : il n'existe pas de liste exhaustive des bonnes pratiques. Ce qui, une nouvelle fois (ou comme toujours), nous ramène à l'expertise de notre auditeur.

Alors quand un client demande "comment on se positionne par rapport à notre secteur d'activité ?", on va rester flou et faire "à dire d'expert". Puis si tous les autres étaient mauvais, est-ce que ça serait une bonne raison pour être mauvais également ?