Pourquoi la sécurité doit être intégrée dès la conception des logiciels

Le coût de correction d'une vulnérabilité croît de 1 à 100 entre conception et production. La modélisation des menaces et la formalisation des exigences de sécurité dès la spécification sont les fondements du secure by design.

M
Mehdi SARIAK
24 mai 2026 7 min de lecture 22 lectures

Points clés

  • Le coût de correction d'une vulnérabilité augmente exponentiellement avec l'avancement du cycle de développement — de 1x en phase de conception à 100x en production.
  • La modélisation des menaces (threat modeling) est l'outil de conception sécurisée le plus ROI-efficace — elle identifie les risques architecturaux avant que le code ne soit écrit.
  • Les exigences de sécurité doivent être formalisées au même titre que les exigences fonctionnelles dès la phase de spécification.
  • Le "secure by design" dépasse le périmètre technique — il inclut les décisions d'architecture de données, de gestion des identités et de gestion des erreurs.
Cas US Equifax (2017) — La vulnérabilité Apache Struts exploitée pour compromettre 147 millions de dossiers existait depuis des mois dans une application exposée. La conception de l'architecture de patch management, qui aurait dû traiter les mises à jour critiques de manière prioritaire, n'avait pas intégré les exigences de délai de remédiation comme contrainte de conception — un défaut architectural, pas seulement un défaut opérationnel.

La règle du 1-10-100 en sécurité applicative

La règle empirique bien établie en génie logiciel stipule que le coût de correction d'un défaut augmente par facteur 10 à chaque phase du cycle de développement. Un défaut de conception coûte 1 à corriger en phase de conception, 10 en phase de développement, 100 en phase de test, et potentiellement 1000 en production (coûts de patch, tests de régression, déploiement d'urgence, impacts opérationnels). Cette règle s'applique de manière encore plus marquée aux défauts de sécurité, dont la correction en production implique souvent des refactorisations architecturales significatives.

L'argument économique pour investir dans la sécurité dès la conception est donc sans ambiguïté. Pourtant, la pression des délais de mise sur le marché conduit régulièrement à reporter la sécurité en fin de cycle, où son coût est maximal et son impact sur les délais perçu comme bloquant. Cette contradiction doit être gérée par la direction avec une vision budgétaire qui intègre le coût différé des décisions de court terme.

La modélisation des menaces comme outil de conception

La modélisation des menaces (threat modeling) est une technique d'analyse structurée qui identifie les menaces, vulnérabilités et risques dans une architecture à un stade où les corrections sont peu coûteuses. Les méthodes les plus répandues — STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege), PASTA (Process for Attack Simulation and Threat Analysis), ou les arbres d'attaque — permettent de décomposer l'architecture en composants, d'identifier les flux de données sensibles, et de raisonner sur les menaces que chaque composant et chaque flux peut subir.

Un threat modeling efficace implique des équipes mixtes : architectes, développeurs, représentants des équipes sécurité, et idéalement des représentants métier qui apportent la perspective du modèle de menace réel (qui veut attaquer ce système et pourquoi ?). Il doit être réalisé à chaque changement architectural significatif, pas seulement lors de la conception initiale.

Formaliser les exigences de sécurité

Les exigences de sécurité doivent être documentées dans les spécifications fonctionnelles au même titre que les exigences de performance ou d'accessibilité. Cette documentation prend généralement la forme d'un Security Requirements Document ou d'user stories de sécurité qui décrivent les comportements attendus du système d'un point de vue sécurité : "Le système ne doit pas exposer les messages d'erreur détaillés à l'utilisateur final", "Toutes les communications entre le client et le serveur doivent utiliser TLS 1.2 minimum", "Les tokens d'authentification doivent avoir une durée de vie maximale de 30 minutes avec possibilité de révocation immédiate".

Ces exigences deviennent des critères d'acceptation vérifiables lors des phases de test et des revues de code. Sans formalisation préalable, les critères de validation de la sécurité restent subjectifs et dépendants de l'expertise individuelle des reviewers.

Cas EU EasyJet (2020) — L'investigation sur la compromission des données de 9 millions de clients a mis en évidence que les pratiques de stockage de données sensibles dans les environnements de développement n'avaient pas été encadrées par des exigences de sécurité formalisées lors de la conception des pipelines de données. Des décisions de conception qui paraissaient pratiques à court terme avaient créé des surfaces d'exposition non anticipées.

Les dimensions non-techniques du secure by design

Le secure by design dépasse la sécurité du code. Il inclut la conception de l'architecture de données (quelles données sont collectées, pourquoi, où elles sont stockées, quelle est leur durée de rétention — en conformité avec les principes de minimisation des données), la conception de la gestion des identités (modèle d'authentification, structure des rôles et permissions, mécanisme de révocation), la conception de la gestion des erreurs (ce qui est journalisé, ce qui est retourné à l'utilisateur, comment les erreurs sont alertées), et la conception de la chaîne de dépendances (comment les dépendances tierces sont évaluées, approuvées et mises à jour).

Ces dimensions architecturales ont des implications de sécurité aussi importantes que le code lui-même — elles conditionnent la surface d'exposition du système et la qualité des informations disponibles pour la détection et la réponse aux incidents.

Cas Asie SingHealth (2018) — L'analyse architecturale post-incident a révélé que le système de gestion des données patients avait été conçu avec des hypothèses de sécurité périmétrique qui ne résistaient pas à une compromission des accès internes. La conception ne prévoyait pas de contrôles de sécurité entre les différentes zones du réseau interne — une décision architecturale qui a amplifié la propagation de l'attaque.
WhatsApp