Les conséquences d'une faille

Quatre défauts de programmation (débordement de tampon, débordement d'entier, entrée non vérifiée, ressource non libérée) et ce qu'ils entraînent pour la confidentialité, l'intégrité, la disponibilité, puis pour l'organisation.

  • 22 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation
  5. Comprendre

Quelques cartes du deck

  • Faille logicielle : de quoi s'agit-il ?

    Voir la réponse

    Défaut d'un programme qu'une personne malveillante peut exploiter pour lui faire faire autre chose que ce qui était prévu.

    Tout bogue n'est pas une faille : elle suppose une entrée que l'attaquant contrôle et un effet qui sert son but (lire, modifier, bloquer).

  • Que ce programme C affiche-t-il ?

    ```c
    #include <stdio.h>

    int main(void) {
    unsigned char c = 250;
    c = c + 10;
    printf("%d", c);
    return 0;
    }
    `

    • 4
    • 260
    • 255
    • -6
    Voir la réponse

    4

    Un unsigned char tient sur 8 bits (0 à 255) : 260 est ramené modulo 256, soit 4. Le compilateur ne signale rien ; le programme continue avec une valeur fausse.

  • En C, copier une chaîne dans un tampon de 8 octets sans vérifier sa longueur provoque un débordement de … ; on le prévient par une copie … à la taille de la destination.

    Voir la réponse

    En C, copier une chaîne dans un tampon de 8 octets sans vérifier sa longueur provoque un débordement de tampon ; on le prévient par une copie bornée à la taille de la destination.

    strncpy ou snprintf bornent la copie, à condition de terminer correctement la chaîne. L'autre garde-fou est de vérifier la longueur avant de copier.

  • Débordement de tampon : de quoi s'agit-il ?

    Voir la réponse

    Écriture de plus de données qu'une zone mémoire de taille fixe n'en peut contenir, qui écrase la mémoire voisine.

    En C, strcpy copie jusqu'au zéro final sans connaître la taille de la destination. L'écrasement peut faire planter le programme ou en détourner l'exécution.

  • Lors de son premier vol, en 1996, Ariane 5 dévie puis se détruit une quarantaine de secondes après le décollage. Quelle cause dans le code l'enquête a-t-elle établie ?

    • Un débordement de tampon dans le logiciel de télémétrie
    • Une division par zéro dans le calcul de la trajectoire
    • Une fuite mémoire qui a saturé l'ordinateur de bord
    • Un flottant 64 bits converti en entier 16 bits trop petit
    Voir la réponse

    Un flottant 64 bits converti en entier 16 bits trop petit

    Un logiciel des centrales inertielles, repris d'Ariane 4, convertissait une valeur liée à la vitesse horizontale qui, plus grande sur Ariane 5, ne tenait plus sur 16 bits. L'exception non traitée a arrêté les deux centrales, et l'ordinateur de bord a pris leurs messages de panne pour des données de vol. Une vérification d'étendue ou un type plus large l'aurait évité.