Ce projet porte sur la réécriture des fonctions malloc(), calloc(), realloc() et free() sous un axe de sécurité, étant donné que même si beaucoup de correction ont été apporté aux implémentations standard de malloc(), la gestion du tas reste encore un vecteur d’attaque puissant.
Principales fonctionnalités
- Le comportement des fonctions réécrites (
my_malloc(),my_calloc(),my_realloc()etmy_free()) est le même que celui des fonctions correspondantes décrites dansman 3 malloc. - L’implémentation se fait à travers 2 pools distincts : un pool de data et un pool de meta-information.
- Ajout d’un canari à la fin de chaque bloc mémoire afin de détecter un overflow.
- Prise en charge des allocations mémoire pour les applications multithread grâce à l’utilisation de mutex afin de protéger les structures de données.
- Détection dynamique de l’overflow via un thread de parcours du tas.
- Détection des cas où le pointeur passé aux fonctions
my_realloc()oumy_free()ne pointe pas vers une zone mémoire qui a été renvoyée par un précédent appel àmy_malloc(),my_calloc()oumy_realloc(). - Détection de double free.
- Possibilité de générer un rapport d’exécution dans un fichier dont le chemin est fourni par l’utilisateur à l’aide de la variable d’environnement
MSM_OUPUT.