ScholarGate
Assistant

Sécurité des logiciels et des applications

La sécurité des logiciels et des applications traite des vulnérabilités qui découlent de la manière dont les programmes sont écrits et déployés, ainsi que des méthodes pour les détecter, les prévenir et les exploiter, reconnaissant que la plupart des violations proviennent de logiciels défectueux plutôt que de cryptographie compromise.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

La sécurité des logiciels et des applications est le domaine qui s'intéresse à l'identification, la prévention et l'atténuation des faiblesses de sécurité dans les logiciels, ainsi qu'à la compréhension de la manière dont les attaquants les découvrent et les exploitent.

Scope

Ce domaine couvre la sécurité du logiciel lui-même : les classes de vulnérabilités (erreurs de sûreté de la mémoire, injection, failles logiques) et la manière dont elles sont exploitées, les pratiques de développement de logiciels sécurisés (conception sécurisée, révision de code, tests, fuzzing), l'analyse des logiciels malveillants, et les préoccupations spécifiques des applications web. Il aborde conjointement les perspectives offensives et défensives. Il exclut les algorithmes cryptographiques et l'infrastructure de réseau et de contrôle d'accès, traités dans des domaines connexes.

Sub-topics

Core questions

  • Quelles classes de défauts de programmation conduisent à des vulnérabilités exploitables ?
  • Comment les attaquants transforment-ils une vulnérabilité en exécution de code ou en vol de données ?
  • Comment un logiciel peut-il être conçu, écrit et testé pour être sécurisé dès le départ ?
  • Comment les logiciels malveillants sont-ils analysés et comment s'en défendre ?
  • Pourquoi les mêmes classes de vulnérabilités réapparaissent-elles malgré des décennies de sensibilisation ?

Key concepts

  • classes de vulnérabilités
  • sûreté de la mémoire
  • débordement de tampon
  • attaques par injection
  • exploitation et mesures d'atténuation
  • cycle de vie du développement sécurisé
  • analyse statique et dynamique
  • fuzzing
  • analyse de logiciels malveillants

Key theories

Sûreté de la mémoire et exploitation
Les langages sans sûreté de la mémoire permettent des erreurs comme les débordements de tampon qui permettent aux attaquants d'écraser des données de contrôle et de détourner l'exécution ; la compréhension de l'exploitation (et des mesures d'atténuation comme ASLR, DEP, les canaris de pile) est centrale pour la sécurité logicielle.
Intégration de la sécurité
La sécurité est plus efficace lorsqu'elle est intégrée tout au long du cycle de vie du développement — par la modélisation des menaces, le codage sécurisé, la révision de code et les tests — plutôt que d'être ajoutée après coup, déplaçant les défauts vers le début du processus où ils sont moins coûteux à corriger.

Clinical relevance

Les vulnérabilités logicielles sont à l'origine de la majorité des incidents de sécurité réels : les erreurs de sûreté de la mémoire dans C/C++ sont à la base d'une grande partie des vulnérabilités critiques, les failles d'injection compromettent les bases de données, et les attaques de la chaîne d'approvisionnement (SolarWinds, Log4Shell) se propagent via les dépendances. Ce domaine façonne directement la manière dont les systèmes d'exploitation, les navigateurs et les applications sont renforcés, et comment fonctionnent les écosystèmes de divulgation de vulnérabilités, de correctifs et de primes aux bogues (bug-bounty).

Evidence & guidelines

Le domaine est organisé autour de bases de connaissances partagées : l'OWASP Top Ten et le CWE cataloguent les faiblesses courantes, le système CVE/NVD suit les vulnérabilités divulguées avec des scores de gravité CVSS, et le cadre MITRE ATT&CK cartographie les techniques d'attaquants. Les cadres de développement sécurisé (Microsoft SDL, NIST SSDF / SP 800-218) et les langages à sûreté de la mémoire (Rust) représentent les meilleures pratiques actuelles.

History

La sécurité logicielle a émergé lorsque les systèmes en réseau ont exposé les programmes aux attaquants distants. Le ver Morris de 1988 a exploité un débordement de tampon ; « Smashing the Stack » d'Aleph One en 1996 a popularisé la technique d'exploitation, ce qui a entraîné des mesures d'atténuation (canaris de pile, mémoire non exécutable, ASLR). Les années 2000 ont formalisé le développement sécurisé (le SDL de Microsoft après le mémo Trustworthy Computing de 2002), et des crises récurrentes — Heartbleed, Log4Shell — maintiennent le domaine au centre des préoccupations, stimulant désormais l'adoption de langages à sûreté de la mémoire.

Key figures

  • Gary McGraw
  • Ross Anderson
  • Elias Levy (Aleph One)
  • Dan Geer

Related topics

Seminal works

  • anderson2020
  • mcgraw2006
  • aleph1996

Frequently asked questions

Pourquoi les mêmes vulnérabilités (comme les débordements de tampon) continuent-elles d'apparaître ?
Une grande partie des logiciels critiques est écrite dans des langages sans sûreté de la mémoire, les délais et la complexité favorisent les erreurs, et le code ancien persiste pendant des décennies. Même avec une sensibilisation, une seule vérification négligée peut être exploitable, c'est pourquoi le domaine privilégie de plus en plus les langages à sûreté de la mémoire et l'analyse automatisée.
La sécurité des applications est-elle distincte de la cryptographie ?
Elles sont complémentaires. La cryptographie protège les données si elle est utilisée correctement, mais les applications sont généralement compromises par des failles logiques, des injections ou des erreurs de mémoire qui contournent entièrement la cryptographie. Une sécurité logicielle robuste est nécessaire pour que les protections cryptographiques soient réellement efficaces.

Methods for this concept

Related concepts