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 Interception : -vol -utilisation illicite -déplacement Interruption : -effacement -destruction Modification : -sabotage -trafiquage -introduction de : -bogues -virus -chevaux de Troie -portes dérobées
Attaques contre les données Données Interception : -vol -copie -détection Interruption : -privation -d accès -destruction Modification : -création de faux -trafiquage
Attaques contre le matériel Interruption : -déni de service -destruction Matériel Interception : -vol -utilisation illicite 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