L'activité d'audit de code combine des analyses automatisées ou semi-automatisées avec des inspections/revues de code manuelles. L'inspection formelle traditionnelle de type Fagan n'étant généralement pas une option dans les projets web en raison de son coût, OSInet a développé une méthodologie d'audit par sondage adaptée aux moyens plus limités des projets web.
Audit OSInet
En quelques lignes, elle consiste à :
- Répliquer en isolation l'environnement à analyser : copie des sources, des bases de données, simulation ou désactivation des interfaces externes.
- Lancer un test de pénétration automatisé sur la réplique isolée qui s'exécutera en parallèle avec le reste des contrôles pour maximiser son temps de fonctionnement et produire au passage une charge système permettant d'évaluer le comportement en charge.
- Exécuter les jeux de test de l'application, s'ils existent et examiner en priorité :
- Les zones couvertes par des tests en échec
- Les zones ayant fait l'objet du plus grand nombre de modifications au vu de l'historique du gestionnaire de versions
- Examiner manuellement le code par sondage, en appliquant les heuristiques acquises par des années d'expérience dans le domaine pour rechercher en priorité les erreurs les plus courantes, donc les plus susceptibles d'être exploitées par les agresseurs.
Dans le cas de Drupal
- Utiliser les outils publics de détection des modifications apportées au code publié, puis analyser manuellement les différence apportées par les modifications
- Analyser les rapports de détection OSInet QA
- Heuristiques d'analyse codées dans l'outil
- Analyse manuelle du graphe de dépendances, détection de cycles
- Pour les audits de performance, analyser les captures de cache
Pour tous les projets PHP
- Utilisation d'analyseurs statiques : identification du code copié/collé relevé des métriques de complexité pour identifier les zones à problèmes potentiels (complexité excessive), détection de code mort respect des normes de codage.
Outillage
- Pénétrateur Skipfish
- Analyseurs Drupal statiques et dynamiques
- Publics : Hacked, MD5Check, Security Review, Coder Review
- Privé : OSInet QA et Heisencache
- Analyseurs statiques PHP Copy/Paste Detector, Mess Detector, et CodeSniffer