Add first software security course
This commit is contained in:
parent
d8343980aa
commit
79354c48e1
1 changed files with 124 additions and 0 deletions
124
content/secu_logicielle/1_introduction/index.md
Normal file
124
content/secu_logicielle/1_introduction/index.md
Normal file
|
@ -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)
|
Loading…
Add table
Add a link
Reference in a new issue