Préjudices, failles, vulnérabilités et menaces

Transcription

Préjudices, failles, vulnérabilités et menaces
INF4470 : Fiabilité et sécurité informatique
Par Eric Gingras
Hiver 2010
Préjudices, failles, vulnérabilités et
menaces
Préjudice
En général, on dit que le préjudice est :
"une atteinte subie par une personne dans ses biens, son
corps, ses sentiments ou son honneur"
Les préjudices sont donc matériel, corporel ou moral
Il est fréquent de cumuler plusieurs de ces préjudices à
l'occasion d'un même accident
Le préjudice est le dommage qui est causé à autrui
d'une manière volontaire ou involontaire. Un préjudice est une perte, ou un dommage
possible dans un système informatique
Vulnérabilité
Une faiblesse dans un système qui pourrait
être exploitée pour causer préjudice
Ces vulnérabilités sont la conséquence de
faiblesses dans la conception, la mise en
oeuvre ou l'utilisation d'un composant
matériel ou logiciel du système informatique.
Il s'agit généralement de l'exploitation de
« bugs » logiciel
On parle aussi de faille de sécurité informatique
« Exploit »
Il arrive que la procédure d'exploitation d'une
faille soit documentée et utilisable sous la
forme d'un logiciel : un exploit
Un exploit est un programme qui permet d'exploiter une
faille dans un système d'exploitation ou un logiciel
L'exploit peut-être local ou distant
L'exploit peut permettre de :
prendre le contrôle d'un ordinateur
d'augmenter les privilèges d'un logiciel ou d'un utilisateur
d'effectuer une attaque par déni de service
etc.
Types d'exploit
Les exploits peuvent être classifiés par le type
de faille qu'ils utilisent. Voici quelques-unes
des failles les plus couramment exploitées.
Dépassement de tampon (Buffer overflow,
Integer overflow, etc.)
Injection de code (Code injection)
Injection SQL (SQL injection)
Cross site scripting (XSS)
etc.
Contrôle
Une mesure protectrice ou préventive,
action, mécanisme, procédure ou
technique qui réduit l’incidence d’une
ou de vulnérabilités
Attaque
L’exploitation d’une vulnérabilité dans un
système informatique est appelé attaque.
L'utilisation d'un exploit est une forme
d'attaque informatique.
Mais l'exploitation d'une vulnérabilité n'est
pas nécessairement accomplie par un
logiciel, par exemple par ingénierie sociale.
Menace
Ensemble de circonstances pouvant
potentiellement causer des préjudices
Menace = Existence de vulnérabilités +
présence potentielle d’attaquants
Types d'attaques
Interruption
Rendre un service ou un élément nondisponible, inutilisable.
Par exemple :
effacer un programme
détruire ou neutraliser une composante du système
Types d'attaques
Interception
Un accès non-autorisé à un service, à une
ressource.
Par exemple :
copie illicite
écoute
interception de données
Types d'attaques
Modification
Changement de données
Trafiquage de ressources ou de logiciel
Fabrication :
Création de faux
usurpation d'adresse ou d'identité
Attaques contre le logiciel
Logiciel
Interruption :
-effacement
-destruction
Interception :
-vol
-utilisation illicite
-déplacement
Modification :
-sabotage
-trafiquage
-introduction de :
-bogues
-virus
-chevaux de Troie
-portes dérobées
Attaques contre les données
Données
Interruption :
-privation
-d’accès
-destruction
Interception :
-vol
-copie
-détection
Modification :
-création de faux
-trafiquage
Attaques contre le matériel
Interception :
-vol
-utilisation illicite
Matériel
Interruption :
-déni de service
-destruction
Modification :
-sabotage
-partiel
-trafiquage
Acteurs
Amateurs
Exploitation de « recettes »
«Script kiddies»
Craqueurs
Expertise surprenante
Criminels accomplis
Moyens très importants
Expertise considérable
Principe de pénétration la plus facile
On doit s’attendre à ce qu’un attaquant
utilise tous les points d’accès au système,
pas forcément les plus évidents, ni ceux
contre lesquels les défenses les plus fortes
ont été montées
Notion de confiance
À qui et quoi peut-on se fier?
Clavier ↔ ordinateur
BIOS
Système d’exploitation
Applications
Données
etc.
Pas de sécurité possible sans confiance
Analyse des menaces
Inspection de chaque élément du système
Considérer les préjudices possibles contre:
Confidentialité
Authentification
Authentification d’origine de données
Intégrité
Disponibilité
Envisager tous les types d’attaques
hypothétiquement possibles
Éléments à considérer
Localement
Nœuds locaux
Liens locaux de communication
Stockage local
Processus locaux
Dispositifs locaux
Éléments à considérer
À distance:
Passerelle réseau
Liens de communication réseau
Ressources réseau
Routeurs
Services réseau (par ex., bases de données)
Attaques spécifiques
Écoute
Interception de données en transit
Analyse de trafic
Fonction du médium
sniffage de paquets
rayonnement électromagnétique
protection par volume, multiplexage
satellites: faisceaux
fibres optiques: pas de rayonnement, insertion
détectable
Attaques spécifiques
Usurpation
accès à des données, programmes, machines
création de faux
détournement
Au niveau liaison (par ex., ARP spoofing)
Au niveau réseau (par ex., IP spoofing
Au niveau applicatif (faux courriel, Web spoofing)
rôle de l’authentification différent selon l’étendue
du réseau
Attaques spécifiques
Violation d’intégrité
Modification de données en transit
Répétition de paquets
Intégrité du code téléchargé
Attaques spécifiques
Déni de service
Blocage partiel ou total
Inondation
Ouverture de connexions
Attaques distribuées
Attaques indirectes
Modification des tables de routage
Menaces et vulnérabilités
Différentes façon de tomber en panne :
Fautes matériel (dégradation)
Fautes de design matériel
Fautes de logiciel
Fautes des procédures d’utilisation
Fautes par action des utilisateurs
Changement de conditions environnementales
Attaques malicieuses
Fautes comme sources d'attaques
En pratique, la plupart (sinon la majorité) des
failles de sécurité sont dues à des fautes dans
l’ingénierie du logiciel qui souffre de
défaillance
L’exemple par excellence: le débordement de
tampon
Débordement de tampons
Moyen de pénétration parmi les plus employés
Possible parce qu’une supposition (souvent
implicite) n’est pas valide : on suppose
qu’aucune écriture ne peut être effectuée à
l’extérieur de la zone de mémoire allouée pour
un tampon
Avec plusieurs langages populaires (par ex., C
ou C++), cette supposition est fausse : il n’y a
pas de vérification de taille avant d’écrire dans
un tampon
Débordement de tampons
Dans la mesure où une fonction obtient des
valeurs provenant d’une entrée externe et
stocke ces valeurs dans un tampon, il est
possible à un usager malveillant de contrôler
ce qui sera écrit en mémoire, à l’extérieur de
la zone allouée pour les paramètres
Débordement de tampons
Débordement de tampons
Débordement de tampons
void function (int a, int b, int c) {
char buffer1[5];
char buffer2[10];
}
int main()
{
function(1,2,3);
}
Débordement de tampons
Débordement de tampons
void function (char *str) {
char buffer[16];
strcpy (buffer, str);
}
int main () {
char *str = "Je compte plus que 16 octets
"; // longueur de chaîne = 29 octets
function (str);
}
Débordement de tampons
Ce programme aura un comportement
imprévisible car le tampon prévu pour 16
octets, reçoit en fait 29 octets
Le débordement écrase le contenu de la pile,
particulièrement l’adresse de retour
En choisissant avec soin les octets de
débordement, il est possible de faire exécuter
un bout de code qui, par exemple, démarre
une coquille de commande avec les droits du
programme original
Défaillances de sécurités
Une attaque de débordement qui fonctionne
n’est pas une défaillance d’un mécanisme de
sécurité, mais c’est clairement une défaillance
de sécurité
Le fait que des défaillance de sécurité découlent
de fautes dans le système n’est pas une
surprise
Dans un système d’envergure, pour éviter ces
fautes non-intentionnelles qui peuvent être
exploitées pour induire des défaillances de
sécurité, il faut éliminer ces fautes du système
Défaillances de sécurités
Le problème consiste alors à identifier les
éléments du système qui sont susceptibles
d’être exploitées
On a le choix de viser soit :
un système qui est certifié sans fautes d’un
bout à l’autre, ou
un système dont certaines parties sont
certifiées sans fautes + une argumentation
rigoureuse (ou une preuve) que ces parties
sont les seules qui peuvent être vulnérables
aux attaques
Défaillances de sécurités
Ce problème est loin d’être facile, même pour
un système considéré comme « simple »
Les systèmes modernes sont de moins en moins
simples:
La taille augmente
Les systèmes sont distribués
On veut assurer la rétrocompatibilité
Outils
Plusieurs outils existent pour :
trouver les vulnérabilités
vérifier la sécurité de codes sources
détecter la présence d'exploits
etc.
CVE
Common Vulnerabilities and Exposures
(gèré par le MITRE : application d'ingénierie et de technologies
avancées aux problèmes critiques [homeland security])
Un dictionnaire des vulnérabilités connues
(brèves descriptions et références).
Chaque vulnérabilité est étiqueté d'un identifiant
unique permettant l'échange d'information
entre les systèmes chargé de sécurité. Les
identifiant ont la forme : CVE-AAAA-NNNN
exemple : CVE-2008-4467
CVE
Cette base de donnée peut être utilisé par les
solutions de détection de vulnérabilités pour
indexer et documenter leurs résultats. Elle
peut également servir à mesurer la couverture
de ces outils ou de ces services.
Le MITRE a défini une procédure couvrant les
informations à diffuser et les fonctions de
recherche et de mise à jour pour l'utilisation
conforme de la liste CVE.
NVD
National Vulnerability Database
(un produit du NIST commandité par le US-CERT [Computer
Emergency Readiness Team] du «Homeland Security»)
Dépôt du gouvernement américain pour
l'information standardisée sur les
vulnérabilités (CVE + vulnerability notes).
Ces données sont destinées à faciliter la gestion
automatisée des vulnérabilités, l'évaluation de
la sécurité et la conformité.
NVD
La base de données NVD inclue des listes de
contrôles (« checklists ») de sécurité, des
descriptions des failles reliées à la sécurité
dans les logiciels, des mauvaises
configurations présentant un impact sur la
sécurité, des listes de produits de sécurité
existants et des métriques pour l'évaluation
d'impact.
Autres listes de vulnérabilités
Secunia : vulnérabilités + virus
SecurityFocus Bugtraq : par Symantec
FrSIRT (French Security Incident Response
Team) : veille sous forme de bulletins.
OSVDB : Open Source Vulnerability Data
Base) : regroupement de divers sources
Autres : Microsoft, Cisco, IBM, etc.
Arbres d'attaques
Concept de Bruce Schneier
Démarche méthodique et intuitive permettant
d’évaluer la sécurité des systèmes
(informatique ou autres)
En assignant des valeurs, on arrive à produire
facilement une évaluation quantitative des
risques
Arbres d'attaques : coffre fort
Arbres d'attaques : coffre fort
Arbres d'attaques : coffre fort
Arbres d'attaques : coffre fort
Arbres d'attaques : coffre fort
Arbres d'attaques : coffre fort
Arbres d'attaques : Widget
Arbres d'attaques : divulgation de
propriétés intellectuels
OR 1. Physically scavenge discarded items from Widget
OR 1. Inspect dumpster content on site
2. Inspect refuse after removal from site
2. Monitor emanations from Widget machines
AND 1. Survey physical perimeter to determine optimal monitoring position
2. Acquire necessary monitoring equipment
3. Set up monitoring site
4. Monitor emanations from site
3. Recruit help of trusted Widget insider
OR 1. Plant spy as trusted insider
2. Use existing trusted insider
4. Physically access Widget networks or machines
OR 1. Get physical, on-site access to Intranet
2. Get physical access to external machines
5. Attack Widget intranet using its connections with Internet
OR 1. Monitor communications over Internet for leakage
2. Get trusted process to send sensitive information to attacker over Internet
3. Gain privileged access to Web server
6. Attack Widget intranet using its connections with public telephone network (PTN)
OR 1. Monitor communications over PTN for leakage of sensitive information
2. Gain privileged access to machines on intranet connected via Internet
Arbres d'attaques : divulgation via le
gain de privilèges sur le serveur Web
AND 1.Identify Widget domain name
2. Identify Widget firewall IP address
OR 1. Interrogate domain name server
2. Scan for firewall identification
3. Trace route through firewall to Web server
3. Determine Widget firewall access control
OR 1. Search for specific default listening ports
2. Scan ports broadly for any listening port
4. Identify Widget Web server operating system and type
OR 1. Scan OS services' banners for OS identification
2. Probe TCP/IP stack for OS characteristic information
5. Exploit Widget Web server vulnerabilities
OR 1. Access sensitive shared intranet resources directly
2. Access sensitive data from privileged account on Web server

Documents pareils