Mapping mémoire
TIP
Pivoter au milieu d’un segment RW.
vmmapetinfo proc mappingspermettent de repérer la structure des pages mémoires.
Analyse des primitives d’écriture
TIP
Vérifier que le payload est réellement écrit, et dans sa totalité.
Pour chaque vulnérabilité :
- quelle zone mémoire puis-je écrire ?
- quels sont les octets interdits ?
- la primitive est-elle tronquée ? limitée ? consommatrice de lignes ?
Analyse des ABI gadgets
IMPORTANT
Un pivot n’est validé que si
rsp,rip, et les valeurs suivantes sont alignées.
Pour chaque gadget utilisé :
- à combien d’instructions
popdonne-t-il lieu ? - comment évolue
RSPavec son exécution ? - où pointe
RSPlors du prochainret? - est-ce que je crée une dépendance mémorielle, systémique ?
Exemple de pop rdi où mov rdi, rsp qui fait pointer rdi sur une zone mémoire corrompue lors du flot d’exécution suivant.
Simulation du control-flow réel
TIP
Toujours simuler 5 à 10 instructions après
rsp, lorsque « tout semble bon ».
On simule :
- l’état de la fake stack ;
- le pivot ;
- la consommation des qwords ;
- les appels réels (
push,pop) ; - les retours.
Validation des invariants
Tester dans des environnements différents
On teste en produisant des logs détaillés :
- dans GDB,
- hors GDB.