diff --git a/content/secu_logicielle/1_introduction/index.md b/content/secu_logicielle/1_introduction/index.md new file mode 100644 index 0000000..d37e1c5 --- /dev/null +++ b/content/secu_logicielle/1_introduction/index.md @@ -0,0 +1,124 @@ +--- +title: "Sécurité logicielle : introduction" +date: 2023-09-13 +tags: ["vulnérabilité", "logiciel", "CVE"] +categories: ["Sécurité logicielle", "Cours"] +--- + +L'attaque de système informatique est aujourd'hui considérée comme courante, Il +suffit de brancher un ordinateur sur Internet pour qu'il soit systématiquement +attaquée. + +La première attaque d'ampleur sur APRANET - MILNET fut le [ver de +Morris][l_morris] qui en 1988 le premier vers à utiliser le réseau pour se +propager. Les autorités en tirèrent alors plusieurs leçons: + + * les réseaux d'informations sont vitaux; + * Internet est sensible aux attaques; + * sa sécurité est un **problème mondial**; + * il y a un réel besoin **d'expert en sécurité** que se soit pour patcher ou + mettre en place des contre-mesures. + +À la suite de cette attaque, le CERT (computer emergency response team ) fut +créé. + +## Qu'est ce que la sécurité logicielle + +Elle se compose de 4 parties : + + * la sécurité des données : concerne les donnés des utilisateurs + (cryptographie); + * la sécurité des protocoles : concerne les échanges de données; + * la sécurité des logiciels : concerne les logiciels, système d'exploitation + compris; + * l'ingénierie sociale : concerne les humains + +## Sécurité des logiciels : les buts + +Pour un attaquant, le principe est de pénétrer au cœur du système. Il est tout +de même bon de préciser que **même root n'a pas forcément tous les droits sur le +noyau**. + +Pour un défenseur, le but est de protéger le système d'exploitation et les +logiciels d'éventuelles failles -- et aussi de combler celles déjà existantes. + +## Les failles + +Elles sont induites **par la complexité de plus en plus fortes des logiciels**, +Un constat aussi : il y a plus de mauvais développeur que d'expert en sécurité. + +Les failles peuvent aussi résulter de conditions particulières d'exécution lors +d'interactions avec d'autres programmes ou encore suite à la montée en charge du +système. + +Il faut aussi garder à l'esprit que les sorties d'un programme ne reflètent pas +forcément ce qu'il exécute. + +## Les modèle d'architecture + +Deux modèles d'architectures existent: + + * **le modèle d'Harvard** implémenté en 1944 dans le *Mark I*. Ici, les données + et le programme sont dans des espaces mémoires séparés reliés à l'unité de + calcul par des bus dédiés. + * **le modèle de Princeton** implémenté dans l'ENIAC en 1946, Les données et + le programme partage le même espace mémoire. Le programme devient alors + auto-modifiable. + +Le développement se fait en suivant le modèle de *Harvard* mais s'exécute en +suivant le modèle de *Princeton*. Le compilateur est changé de traduire le code +d'une architecture vers l'autre. Mais cette traduction **ne se fait pas sans +perte...* + +## Les vulnérabilités + +Les étapes pour la mise au jour des vulnérabilités sont: + + 1. découverte d'un éventuel problème dans un programme + 2. soumission du problème + 3. tri : le problème est-il déjà référencé? Concerne-t-il bien ce logiciel? + 4. enregistrement de la faille avec nom et numéro d'identification + 5. analyse de la faille pour en comprendre tous les tenants + 6. patch du programme + 7. déploiement du correctif + +### CVE -- Common Vulnerabilities and Exposure + +C'est une autorité de numérotation utilisée par les grand nom de l'informatique +(Debian, Google, Apple etc.). Les vulnérabilités référencées ne sont pas +forcément publiques. + +Ce n'est pas la seule base de données existante sur le sujet, il en existe bien +d'autre(CERT, Debian DSA ...). + +### Les différents types + +#### Les menaces + +C'est un potentiel chemin vers une attaque. Elle ne se transforme pas forcément +en attaque. + +#### la vulnérabilité + +C'est une menace pouvant être utilisée pour en tirer avantage, Elle s'accompagne +un *PoC -- Proof of Concept* et éventuellement d'un *exploit* + +#### Exploit + +C'est l'exploitation malveillante d'une vulnérabilité. + +### Exploitation + +Un attaquant se focalisera toujours sur la partie la plus faible du système +d'information : + + * **le flux de données** : injecter un jeu de donnés spécialement forgées afin + d'obtenir des conditions d'exécutions particulières + * **le flux d'exécution** : modifier ou contrôler les processus en cours + d'exécution + * **les ressources** : accaparer les ressources afin d'en privé les processus : + déni de service par exemple + * **les utilisateur** : forcer les utilisateur à réaliser des action par + l'ingénierie sociale. + +[l_morris]:https://fr.wikipedia.org/wiki/Morris_(ver_informatique)