0x5000 · Domaine
Développement sécurisé
La seule mitigation qui supprime des classes entières de bugs, c'est de ne pas les écrire. Ce domaine couvre les langages sûrs pour la mémoire, les modes durcis et idiomes plus sûrs du C++ moderne, et la manière de migrer progressivement sans tout réécrire d'un coup.
Guides de ce domaine
Pourquoi les langages sûrs pour la mémoire éliminent des classes de bugs, ce que garantit la propriété de Rust, et où unsafe et le FFI restent risqués.
Autres domaines
Fondamentaux de la mémoire
Pile, tas, segments ELF et conventions d'appel : le terrain de chaque bug.
Classes de vulnérabilités
Débordements, use-after-free, double free, bugs d'entiers et de chaînes de format, et comment les repérer.
Mitigations d'exploitation
Canaris, NX/DEP, ASLR/PIE, RELRO, FORTIFY_SOURCE, CFI, CET et PAC, et comment les vérifier.
Trouver les bugs
AddressSanitizer, UBSan et fuzzing guidé par la couverture avec libFuzzer et AFL++.
Triage des crashs
Lire signaux, backtraces, rapports de sanitizers et core dumps, et décider quoi corriger en premier.
Parcours d'apprentissage
Un parcours légal et progressif, du C et de l'assembleur aux épreuves pwn de CTF et aux métiers de la sécurité.
Techniques d'exploitation
ret2win, ret2libc, chaînes ROP, écrasement de GOT et primitives de chaînes de format, construits et neutralisés en labo.
Exploitation ARM64
Conventions d'appel AArch64, registre de lien, ROP sur ARM, et défenses PAC et BTI.
Exploitation du noyau
Élévation de privilèges depuis un bug noyau : le modèle de credentials, ret2usr, et SMEP, SMAP, KASLR et KPTI.
Exploitation Windows
Écrasement de SEH, contournement de DEP par ROP, et les mitigations SafeSEH, SEHOP, ASLR, CFG et CET.