• Aucun résultat trouvé

Analyse statique de code dans un cycle de développement Web Retour d'expérience

N/A
N/A
Protected

Academic year: 2022

Partager "Analyse statique de code dans un cycle de développement Web Retour d'expérience"

Copied!
31
0
0

Texte intégral

(1)

Analyse statique de code dans un cycle de développement Web Retour d'expérience

Retour d'expérience

(2)

Agenda

Introduction

Notre contexte

L’(in)sécurité des applications web

Approche:

Insérer un jalon d’analyse statique de code dans le cycle de développement Les objectifs et les enjeux

Méthode (analyse statique de code par un logiciel spécialisé) Méthode (analyse statique de code par un logiciel spécialisé)

Projet de mise en œuvre

Évaluation et choix d’une solution technique

Comparatif et choix de la solution

Mise en œuvre

Bénéfices et capitalisation… et imprévus ! Les facteurs clés de succès

Les écueils à éviter

(3)

Le contexte

Le contexte

(4)

Notre domaine

Orange Portails, une entité d’Orange France

Hébergement multi-site de services Web

Développement d’applications Web et mobile

Évolutions fréquentes

Nombreuses applications à développer de manière sûre Plusieurs dizaines d’audits par an

En charge du portail orange.fr

Plusieurs dizaines de millions de visites et de pages vues chaque mois

En charge du portail orange.fr

Services aux clients Orange (mail, factures…) Moteur de recherche

Annuaire (118712.fr) Régie publicitaire Assistance en ligne Boutiques

(5)

L’application maillon faible ?

Menaces & impacts Vulnérabilités

Menaces & impacts

Le vol de données est très médiatisé

Les grandes organisations sont des cibles de choix

Cf. http://datalossdb.org

Les outils « script kiddies » sont légion

(6)

Pas encore convaincus ?

Les Applications Web sont la cible #1 des pirates

75% des attaques concernent la couche application (Gartner)

XSS et SQL Injection : #1 et #2 des vulnérabilités dans le top 10 OWASP

La plupart des sites sont vulnérables

90% des sites sont vulnérables aux attaques d'application (Watchfire) 99% des sites ne sont pas conformes PCI DSS (WASC)

78% d'applications Web affectées de vulnérabilités exploitables (Symantec)

(7)

Notre approche

Notre approche

(8)

Le constat initial

Analyses de code réalisées sans outils, en phase de recette

Rapport d’audit et correctifs

Mais … Mais …

L’auditeur échantillonne : il n’audite pas l’ensemble du code

Les applications ne sont pas toutes auditées et pas à chaque changement L’audit n’est pas réalisé lors d’évolutions mineures du code (hors projet)

Peu de capitalisation d’un audit à l’autre et le suivi des correctifs est fastidieux

(9)

Notre réponse : Systématiser l’analyse statique de code

Comment ? Outils et processus sont complémentaires

Analyse de code statique dans le cycle de développement Via un outil d’analyse boite blanche adapté à nos besoins

Dans quel but ?

Dans quel but ?

Déclencher des analyses à chaque changement

Couvrir potentiellement tous les projets (pas de limite) Systématiser le suivi des vulnérabilités

Responsabiliser et faire progresser les développeurs (s’auto auditer)

(10)

Ce qui n’exclut pas

Une post-analyse par l’auditeur sécurité Faux positifs, sévérité des failles…

La recherche de failles fonctionnelles (e.g. absence de Captcha sur un formulaire)

L’analyse du comportement dynamique de l’application

Pen-test, fuzzing

(11)

Le projet de mise en œuvre

Le projet de mise en œuvre

(12)

Etude préliminaire de solutions, puis mise en œuvre

Sélection de l’outil d’analyse statique

Cahier des charges

Benchmark de solutions Open source et commerciales Sélection de la solution la plus appropriée

Convaincre le management ☺

Installation et utilisation

Installation et utilisation

Installation initiale dans la chaine d’intégration continue

Technique et organisation

Analyse des applications

Intégration des applications réparties par projet Lancement des analyses par l’outil

Traitement des vulnérabilités

(13)

Sélection de la solution d’analyse de code

1.

Cahier des charges

Intégration avec les outils internes (intégration continue, bug tracking, …) Intégration avec les processus existants

Support impératif de PHP (C/C++ et Java en priorité plus basse) Taux de Faux Positifs / Faux Négatifs

Coûts acquisition, intégration et de fonctionnement

2.

Benchmark : 3 produits leaders du Magic Quadrant et une solution Open Source

2.

Benchmark : 3 produits leaders du Magic Quadrant et une solution Open Source

Pixy (Open Source)

Source Code Analyzer édité par Fortify

AppScan Source Edition (ex-Ounce Labs) édité par IBM Armorize édité par CodeSecure

3.

Méthodologie d’étude

(14)

Résultats (efficacité)

Overall Comparison

68

42 60

50 46

64 61

50 49 60 70 80

Overall Comparison (without Pixy tests)

74% 74%

57%

50% 45%

60%

70%

80%

Detected Vulnerabilities

Code exemple avec 110 vulnérabilités connues

Code exemple avec 58 tests

42

6 5

1 15

7 8

7 7

3 2 0 1

0 10 20 30 40

Sum True Positives Sum False Negatives Sum False Positives (total)

Sum False Positives (tests)

Sum False Positives (additionnal) CodeSecure SCA AppScan SE Pixy

0%

10%

20%

30%

40%

50%

CodeSecure SCA AppScan SE Pixy

Product

Detected Vulnerabilities

Attention : tout benchmark peut être biaisé (volontairement ou pas)

(15)

Les arguments pour convaincre le management

Réduction des coûts à périmètre constant d’audits

Réduction du nombre d'incidents

Gain de temps net pour les auditeurs sécurité (lié à l’automatisation)

Correctifs : le plus tôt est le mieux !

Contexte commercial et légal

(16)

En pratique: Insertion dans le dispositif d’analyse continue

Checkout Scan & upload

Notifie

Auditeur

Notifie

Qualifie

Développeur

Consulte & modifie

Corrige

(17)

En pratique: à quelle occasion déclencher l’analyse ?

Spécifications

Conception Maintenance

Changement mineur

Evolution majeure (projet)

(18)

Généralisation : choix des applications à analyser

Cible prioritaire : les applications web et mobile « user facing »

Traitement d’entrées utilisateur (directes ou indirectes)

Phase de sélection par l’intermédiaire de critères

Business

Sensibilité et exposition de l’application

Techniques

Capacité de l’outil à être efficace sur le code audité

(19)

Retour d’expérience

Retour d’expérience

(20)

Organisation : Des acteurs et des processus clés

Les responsables d’application

Sur un portefeuille d’applications ils s’assurent de :

L’insertion de l’analyse statique de code dans leur cycle de développement La correction des vulnérabilités avant passage en production

La gestion des accès des développeurs aux résultats des scans

Rôle crucial d’interlocuteurentre sécurité et développeurs

Deux processus parallèles pour l’analyse récurrente

Deux processus parallèles pour l’analyse récurrente

Approche opportuniste

Déclenchement automatique de l’analyse statique à chaque changement Avertissement par l’outil des failles découvertes vers l’équipe sécurité ET

Approche projet

Déclenchement de l’analyse par le responsable d’application Mise en œuvre de l’analyse des résultats dans le contexte projet

(21)

Organisation : La relation et le rôle des développeurs

Traitement des évolutions et correctifs différente selon les équipes

Bug-tracking, politique de gestion de versions…

Pas de mode imposé de communication avec les équipes de développement

Via interface client lourd ou Web d’analyse des résultats Via rapport d’audit généré par l’auditeur avec l’outil Via échanges mail, téléphone ou réunion physique

Après une période suffisante d’apprentissage

Les développeurs s’auto-auditent localement pendant leurs développements (plugin) Gain de temps

(22)

Organisation : Conseils et synthèse

Processus parallèles : meilleure couverture grâce à cette approche combinée

Limiter les tâches manuelles pour fluidifier les rouages

Ne confier / déléguer l’outil qu’après une période d’apprentissage

L’outil et les nouveaux processus doivent s’intégrer aux outils et

processus existants

(23)

Valeur ajoutée : Calcul automatique d’indicateurs

Les indicateurs ne doivent pas se reposer sur les résultats « bruts » du scan Éliminer les faux positifs

Apprécier la sévérité en fonction du contexte (non réalisable par un outil)

Différentes audiences, différents indicateurs

Responsables d’application & développeurs Responsables d’application & développeurs

Évaluation de la charge de travail associée au nombre de correctifs à mettre en œuvre Tendances d’évolution par familles de vulnérabilité

Management

Évaluation du niveau de risque courant Conformité (PCI DSS par exemple)

(24)

Valeur ajoutée : Généralisation du déploiement

Volume de code analysable

Application PHP 16.000 LOC : 5 minutes (mono-cœur, 2Go RAM) Application C/C++ 110.000 LOC : 1h30 (mono-cœur, 2 Go RAM) L’auditeur passe 1 journée pour analyse des résultats

L’auditeur passe habituellement 1 semaine pour un audit applicatif

Capitalisation des audits

Élimination des faux positifs marqués à l’audit précédent

Gain de temps pour l’auditeur qui se concentre sur les nouveaux résultats

(25)

Les limites intrinsèques de l’analyse statique

Exemple 1 : pas de notion de contexte

<?php

$val = $_GET[‘val’];

if (preg_match(‘/^[A-Za-z0-9_]+$/’, $val) { do_stuff($val); }

do_stuff($val); } else {

do_something_else($val); }

(26)

Les limites intrinsèques de l’analyse statique

Exemple 2 : pas de connaissance des données définies à l’exécution

<?php

function kikoo($val) {

echo $_GET[‘val’]; } function lol($val) {

function lol($val) { echo ‘lol’; }

$func = $_GET[‘func’];

$func();

Les données définies à l’exécution ne peuvent être devinées

(27)

Valeur ajoutée et limites : Conseils et synthèse

Connaître et maitriser les limites de l’analyse statique et de vos outils

Les résultats d’un scan automatique doivent être analysés pour être pertinents

La généralisation du déploiement nécessite réflexion et organisation

(28)

Quelques imprévus

Support avancé mais incomplet de PHP objet

Héritage non supporté

Pas de support d’applications basées sur Zend

Chargement dynamique de classes Chargement dynamique de classes

Calcul de la priorité associée aux vulnérabilités « codée en dur »

Pas de prise en compte du contexte : problématique car tout est basé là- dessus

Priorité des correctifs, modèle de rapport d’audit , indicateurs, communication au management…

(29)

La question des faux négatifs et des faux positifs

Faux négatifs Faux positifs

Faux sentiment de sécurité Mauvais ressenti

Manques dans le support du langage par l’outil Pénibilité de l’analyse

Limites intrinsèques de l’analyse statique Difficulté accrue pour déléguer l’analyse aux équipes de développement

Réduction des faux négatifs Réduction des faux positifs Identification des bugs / manques et rapports

vers l’éditeur pour correctifs

Identification des bugs / manques et rapports vers l’éditeur pour correctifs

(30)

En synthèse

Impossibilité de trouver toutes les failles, mais :

Une bonne partie des failles d’implémentation le sont ! Aiguille l’auditeur vers des parties de code « suspectes » L’outil est systématique, l’auditeur est sélectif

L’outil suit une logique de Dataflow, vs lecture de code simple

Effets « vertueux »

Effets « vertueux »

Responsabilisation des développeurs (audits récurrents) Indicateurs marquants et factuels (visibilité)

Capitalisation des résultats (suivi)

Communication vers les équipes et la hiérarchie

Convaincre de la valeur ajoutée de l’approche et de l’outil

(31)

Conclusions

Automatiser, automatiser, automatiser !

Un bon outil d’analyse statique

augmente l’efficacité et la couverture de l’audit boite blanche complète bien la lecture de code réalisée par un auditeur

prouve son efficacité et sa complémentarité avec les outils de pen-test

Mais tout n’est pas qu’une affaire d’outils

Mais tout n’est pas qu’une affaire d’outils

« Security is a Process, not a Product » (B. Schneier)

Les audits doivent être programmés dans le cycle de développement Capitaliser les résultats des audits précédents

Institutionnaliser les audits à chaque changement

Références

Documents relatifs

Deviating from conjunctive queries in the database and description logic worlds, we have regular path queries (RPQs): query languages used to query arbitrary length paths in

C’est grˆ ace ` a cette possibilit´e de stocker, dans le mod`ele relationel unifi´e de Framesoc, les r´esultats des requˆetes d´eclaratives ex´ecut´ees sur VIDECOM, que les

Initialement constitué de 6 tranches de 500 MWc, le cahier des charges de l’appel d’offres a évolué à plusieurs reprises depuis son lancement : d’abord, la puissance

Initialement constitué de 6 tranches de 500 MWc, le cahier des charges de l’appel d’offres a évolué à plusieurs reprises depuis son lancement : d’abord, la puissance

La réanalyse d’entretiens existants à partir de nouvelles problématiques de recherche a, dans notre expérience, mené à des résultats scientifiques intéressants : interrogés

Ce travail permet également de comprendre quel est le développement actuel de la ville de Colombo à travers, notamment, la présentation de projets urbains précis, tels que «

La mise en place d’un enseignement général de physique et chimie en cinquième dont il avait été question l’année passée n’est donc pas prise en compte dans ce projet puisque

La seconde définition est celle retenue par l’Agence Nationale d’Accréditation et d’Evaluation de la Santé (ANAES) en 2002 : « Les soins palliatifs sont des