New Memory Corruption attacks (Mathias Payer)

La conférence s’est ouverte sur un récapitulatif des technologies de protection actuellement utilisées contre l’exploitation des buffers overflow et des écrasements de EIP.

Ainsi, le conférencier a rappelé l’utilisation de DEP pour la protection contre l’exécution de données utilisateurs, de l’ASLR pour la randomisation des adresses lors du chargement en mémoire et des stack canaries ou Safe Exception Handler (SEH) qui agissent comme des pièges de zones mémoire.

À partir de ces prérequis, le conférencier met en avant les risques d’attaques par appel à du code valide en réécrivant l’EIP et propose deux nouveaux mécanismes de protection : le Stack Integrity avec la mise en place d’une Stack Shadow (restriction dynamique des adresses de retour) et le Control Flow Integrity (CFI) qui définit un set d’adresses autorisées d’EIP.

Une implémentation primaire de cette protection (telle que MS Control-Flow Guard) est vulnérable à une attaque respectant un contexte CFI valide appelée Control Flow Bending (CFB). Cette vulnérabilité peut se réduire en utilisant un Control Flow Graph plus précis permettant de contrôler les adresses de retour au détail : c’est le Strong CFI. L’absence d’utilisation de la fonctionnalité Stack Integrity avec un Strong CFI peut conduire à l’utilisation d’appels système (type retour sur la libc) pour obtenir un shell via la fonction « system() ; ».

Il existe aujourd’hui différentes implémentations de CFI et Strong CFI dont notamment IFCC, Lockdown, LLVM (patch par Google en cours d’intégration) et MS Control Guard. Le conférencier nous apporte, mesures à l’appui, un comparatif des différentes implémentations et leurs défauts.
IFCC, par exemple, implémente une classe comme un seul set retour. L’implémentation de Google est semble-t-il la meilleure implémentation pour protéger d’attaque par redirection du flux d’exécution (Forward Edge) mais cependant seul Lockdown apporte une implémentation pour les retours de fonctions (Backward Edge).

Le conférencier nous a ensuite montré les dangers des attaques par Format String. En montrant une exploitation concrète et l’utilisation les caractères spéciaux sur la gestion d’une format string en C.

Facebooktwitterlinkedin
Pierre d'Huy
Pierre d'Huy est un ingénieur spécialisé dans la sécurité des Systèmes d'Information. Il donne occasionnellement des conférences en école (ESE, ESGI Secure Day...) ou devant des publics non-techniques (Les matinées du droits Lamy, l'AFCDP). Amateur de cryptographie et de cartographie, il propose des articles sur de nombreux sujets qui le passionnent.

Leave a Comment

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *