Ouvrir le menu Fermer le menu

Comment faire un audit de code ?

trait de séparation
Temps de lecture : 3 minutes

Qu'est-ce qu'un Audit de Code ?

En développement logiciel, un audit de code est une pratique consistant à parcourir le code source d'un logiciel dans un objectif de vérification tant de cybersécurité que de sureté de fonctionnement.  

Cette analyse permet, avant même toute exécution du code, d’identifier des constructions peu sûres, des vulnérabilités voire des erreurs latentes présentes dans le code et susceptibles de compromettre la sécurité du système qui l’utilise. La correction de ces faiblesses améliore la fiabilité, la robustesse et la maintenabilité du code et permet de s’assurer de sa conformité vis-à-vis des standards métiers ou de normes d’assurance qualité logicielle (IEC 61508, EN 50155, ISO 26262, DO178, CERT-C/SecureC, CRW...etc.)

Dans le cadre d’une étude de cybersécurité, l'audit de code peut être réalisé préalablement à des tests d’intrusion : il est ainsi possible de tester les vulnérabilités identifiées, afin de mieux en évaluer leur exploitabilité par un attaquant.

Les étapes de l'audit de code

Le déroulement du processus d’audit est illustré dans la figure suivante. Après réunion de lancement destiné à s’assurer avec le client des objectifs de l’audit et de la complétude des données d’entrée, les activités d’audit sont séquencées en plusieurs phases jusqu’à la fourniture du rapport d’audit présenté lors de la réunion de clôture.
étapes-audit-codes_ISIT
La première phase consiste à préparer l’environnement d’analyse à mettre en place : identification et collection des éléments logiciels du projet, installation de l’environnement de développement et vérification de compilation correcte du code source, configuration des outils d’analyse avec les spécificités du projet, telles que les règles de codage à vérifier ou les classes de défauts à rechercher en fonction du domaine d’application, des normes applicables...etc.

La phase suivante est la phase d’analyse statique du code proprement dite, réalisée de façon automatique par les outils et à l’issue de laquelle chaque outil génère un rapport exhaustif des résultats d’analyse et des erreurs détectées, selon des critères propres à l’outil utilisé.

Elle est suivie d’une phase d’analyse des rapports par les experts qui doivent interpréter les résultats bruts fournis par les outils pour confirmer les défauts (élimination des faux-positifs), comprendre leur origine dans le contexte global de l’application, généralement hors de portée des outils d’analyse statique de code,  et synthétiser les résultats dans le rapport final livré au client.

Ces résultats sont généralement présentés avec l’évaluation des risques identifiés et les propositions de mesures correctives lors d’une réunion de clôture de l’audit de code.

Audit de codes et détection des défauts d’un logiciel

Forte de sa longue expertise dans les outils et le développement d’applications temps réel critiques, ISIT a mis en place un service d’audit de code à la demande de clients qui ne disposent pas des outils et/ou de l’expertise nécessaire dans leur bureau d’études, mais qui souhaitent néanmoins pouvoir garantir un haut niveau de qualité, de robustesse et de sécurité de leurs logiciels, exigence particulièrement prégnante dans le cas de développement des systèmes connectés, pour lesquels les faiblesses non connues du code se traduisent souvent en dangereuses vulnérabilités.

Les audits de code réalisés par ISIT regroupent plusieurs volets en fonctions des objectifs et demandes clients :
  • Vérification du respect des règles de codage : Quelles soient spécifiques (propriétaires) au projet ou imposées par une norme (telles que MISRA ou CERT), ISIT s’appuie sur des outils de d’analyse statique syntaxique reconnus et qualifiés qui fournissent des indicateurs détaillés de qualité du code en termes de conformités vis-à-vis de standards de codage, de complexité, de testabilité et de maintenabilité.
  • Analyse statique avancée : Toujours par le biais d’outils spécialisés, les équipes d’expert ISIT sont à même d’effectuer des analyses statiques avancées par modélisation du code source (C, C++, Java & C#). Cette approche permet la détection d’anomalies susceptibles de provoquer des erreurs d’exécution, appelées aussi « erreurs Run-time », telles que division par zéro, buffer overrun, ….. Cette technique permet également de détecter des failles de sécurité avant toute exécution du code, et peut même analyser les défauts les plus graves (dépassement de pointeur, injection SQL, …). La particularité de l’approche ISIT est de pouvoir mener ces analyses non seulement sur les fichiers sources mais également sur les librairies ou codes objet ne disposant pas des fichiers sources.
  • Analyse de composition : L’analyse de composition logicielle (SCA), permet d’établir l’inventaire (SBOM) des composants « open-source » et des librairies tierces-parties (COTS). Réalisée sur le code source mais aussi également sur le code objet, ce type d’analyse permet l’identification de vulnérabilités déjà connues et documentées (vulnérabilités N-days) ainsi que connaitre les types de licences (GPL entre autre) auxquels sont liés ces composants.
A l’issue de ces analyses, les experts Sûreté de Fonctionnement et Cybersécurité d’ISIT effectuent une revue commentée des défauts détectés afin d’amener au client une bonne compréhension de ces défauts,  ainsi que des préconisations pour leur correction et la mitigation des vulnérabilités (lorsque ces solutions n’implique pas la connaissance métier du domaine du client).

Au-delà de l’audit de code, nos experts sont à même de vous accompagner et de vous assister tout au long de votre développement pour vous aider à développer un logiciel conforme aux normes les plus exigeantes de sécurité fonctionnelle et de cybersécurité.
1

Ces articles peuvent vous intéresser

image blog article

Comment identifier les failles logicielles ?

Avant que les attaques se produisent, venez télécharger ce livre blanc qui vous guidera pour résoudre vos vulnérabilités logicielles.

image blog article

Analyse SCA (Software Composition Analysis) : définition et bénéfices

La plateforme WhiteSource, distribuée en France par IST, est une solution d’analyse SCA (Software Composition Analysis). Terme relativement nouveau dans l’industrie, l'analyse de composition logicielle désigne l’ensemble des outils permettant de dresser l’inventaire des Open Source utilisés dans une application.

image blog article

Rendre son système Cybersecure

De nos jours les menaces cyber sur les équipements embarqués sont une réalité. Connecter son système c’est le rendre vulnérable et la question n’est plus de savoir si on doit le protéger mais quel est le niveau de protection que l’on doit y intégrer.

image blog article

Respecter les règles de codage MISRA C/C++

Dans les industries développant du logiciel critique en C ou C++, les standards MISRA C/C++ sont régulièrement cités comme les règles de codage à appliquer. Mais en pratique, celles-ci sont rarement suivies de manière complète, et les chefs de projet ou ingénieurs qualité logiciel ont de grandes difficultés à s’en assurer. Existe-t-il des moyens simples et efficaces de diminuer l’effort de vérification, et maximiser leur respect ?

image blog article

SAST vs SCA

7 différences clés pour choisir la solution qui répondra à votre besoin !

image blog article

Quantifier le risque cyber

Une capacité qui pourrait tout changer !