4.5 KiB
title | date | tags | categories | |||||
---|---|---|---|---|---|---|---|---|
Sécurité logicielle : introduction | 2023-01-13 |
|
|
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 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:
- découverte d'un éventuel problème dans un programme
- soumission du problème
- tri : le problème est-il déjà référencé? Concerne-t-il bien ce logiciel?
- enregistrement de la faille avec nom et numéro d'identification
- analyse de la faille pour en comprendre tous les tenants
- patch du programme
- 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.