Fonctionnement des exploits par Buffer Overflow

Les agresseurs se servent des exploits par Buffer Overflow pour lancer un code exécutable en faisant déborder la mémoire tampon fixe réservée à un processus d’entrée. Ce code leur permet ensuite de prendre le contrôle de l’ordinateur cible ou d’en compromettre les données.

Il existe deux types d’exploit par Buffer Overflow :
  • Attaques basées sur les tas : elles inondent l’espace mémoire réservé à un programme, mais elles sont difficiles à réaliser et rares.
  • Attaques basées sur les piles : elles utilisent les objets de la mémoire de la pile pour stocker les entrées de l’utilisateur ; ce sont les plus communes.
Le processus suivant décrit des attaques par Buffer Overflow basées sur des piles :
  1. Processus normal de mémoire de pile : l’objet de la mémoire de pile de taille fixe est généralement vide et en attente d’une entrée de l’utilisateur. Lorsqu’un programme reçoit des entrées de l’utilisateur, telles que son nom, ces données sont stockées sur le dessus de la pile et une adresse mémoire de retour leur est attribuée. Lors du traitement de la pile, les entrées de l’utilisateur sont envoyées à l’adresse de retour définie par le programme.
  2. Dépassement de la pile : lors de l’écriture d’un programme, une quantité spécifique de mémoire est réservée aux données. La pile déborde si les données écrites sont plus volumineuses que l’espace qui leur est réservé dans la mémoire. Ce phénomène constitue un problème uniquement lorsqu’il est combiné à des entrées malveillantes.
  3. Exploitation du dépassement : si le programme attend que l’utilisateur entre son nom, mais que l’agresseur entre une commande exécutable dépassant la taille de la pile, cette commande est enregistrée en dehors de l’espace réservé.
  4. Exécution du code malveillant : la commande n’est pas exécutée automatiquement simplement parce qu’elle déborde de la mémoire tampon d’une pile. Mais cela peut se produire si une adresse de retour pointant vers la commande malveillante est fournie par l’agresseur. Le programme commence d’abord à planter à cause du Buffer Overflow, puis il tente de corriger le problème en utilisant l’adresse de retour fournie par l’agresseur. S’il s’agit d’une adresse valide, la commande malveillante est exécutée.
  5. Exploitation des autorisations : les programmes s’exécutent généralement en mode noyau ou avec des autorisations héritées d’un compte de service. Le code malveillant s’exécute donc à présent avec les mêmes autorisations que l’application compromise. Par conséquent, l’agresseur peut obtenir le contrôle total du système d’exploitation.

Fonctionnement des exploits par Buffer Overflow