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