Les logiciels peuvent être vulnérables soit à cause d’un défaut de conception introduit à une étape du cycle de développement, soit à cause de caractéristiques de l’environnement d’exécution qui ne garantissent pas le respect des abstractions imaginées lors de la conception.

Ces dernières représentent une majorité des causes de vulnérabilités logicielles, et peuvent efficacement être évitées par l’utilisation de langages de programmation dits sûrs comme Ada et SPARK, et d’outils d’analyse statique ou dynamique appropriés (outils SAST/DAST) que nous présenterons. Il est plus complexe de se prémunir de défauts de conception, qui peuvent être introduits au niveau des exigences, de l’architecture, de la spécification ou du code source, en particulier quand le passage d’une étape de développement à la suivante repose essentiellement sur des revues manuelles d’artefacts.

L’utilisation de langages métiers (DSL) tels que Simulink®/Stateflow® ou RecordFlux permet de générer le code source depuis des spécifications, ce qui retire une étape manuelle risquée. Nous montrerons les stratégies adoptées pour garantir la correction de cette génération automatique.

Enfin, nous évoquerons les travaux en cours pour sécuriser les deux bouts de la chaîne de génération du logiciel, du côté des exigences en amont et du binaire en aval.