Aller au contenu

Florian Amette

Security engineer writing about memory safety, exploit mitigations, sanitizers and fuzzing, from the secure-coder's side of the fence.

0x9000 · Exploitation du noyau

KASLR, KPTI et défenses modernes du noyau

Randomisation d'adresses, isolation des tables de pages et options de configuration qui durcissent un noyau Linux : ce que chacune arrête et comment l'activer.

0x9000 · Exploitation du noyau

Exploitation du noyau : d'un bug à root

Un bug mémoire du noyau vise le privilège, pas un shell : modèle de credentials, charge commit_creds(prepare_kernel_cred(0)), retour propre en userspace.

0x9000 · Exploitation du noyau

ret2usr, SMEP et SMAP

Le noyau faisait confiance à la mémoire userspace. SMEP et SMAP y ont mis fin — et voici comment le ROP noyau les contourne.

0xa000 · Exploitation Windows

Contourner DEP sous Windows avec ROP

DEP rend le shellcode sur la pile inexécutable ; une chaîne ROP appelle VirtualProtect pour rendre la région exécutable, puis y saute.

0x7000 · Techniques d'exploitation

one-gadget : une adresse vers un shell

Parfois vous ne contrôlez qu'un pointeur. Un one-gadget est une seule adresse libc qui appelle execve("/bin/sh") si ses contraintes tiennent.

0x7000 · Techniques d'exploitation

ret2dlresolve : résoudre un symbole sans fuite

Sans fuite libc : forgez la relocation que lit l'éditeur de liens dynamique pour lui faire résoudre et appeler system. Et pourquoi Full RELRO y met fin.

0x7000 · Techniques d'exploitation

Attaques FSOP : détourner un objet FILE

Les hooks partis, l'objet FILE devient la cible : un appel stdio passe par un pointeur de vtable inscriptible — corrompez-le et le prochain fwrite tombe.

0x7000 · Techniques d'exploitation

Fuites d'information : vaincre l'ASLR et les canaris

Les exploits modernes sont fuiter-puis-agir. Construisez une lecture hors limites, puis servez-vous-en pour retrouver un canari de pile, la base PIE et la base libc.

0x7000 · Techniques d'exploitation

ret2csu : emprunter le gadget universel du runtime

Pas de gadget pop rdx ? Le code de démarrage du runtime C a une séquence universelle qui charge plusieurs registres et fait un appel contrôlé. Construisez-la avec pwntools.

0x7000 · Techniques d'exploitation

SROP : exploiter avec un faux cadre de signal

Quand les gadgets sont rares, forgez un cadre de signal. Un appel sigreturn restaure tous les registres depuis la pile d'un coup — construisez-en un avec pwntools pour appeler execve.

0x7000 · Techniques d'exploitation

Stack pivoting : relocaliser la chaîne ROP

Quand le débordement dépasse à peine l'adresse de retour, déplacez rsp vers un tampon maîtrisé et exécutez-y la vraie chaîne. Tutoriel pwntools.

0x7000 · Techniques d'exploitation

Détourner la GOT : rediriger un appel à la libc

La liaison paresseuse laisse la GOT inscriptible : une écriture arbitraire sur une entrée transforme puts() en system() — jusqu'à ce que Full RELRO la fige.

0x7000 · Techniques d'exploitation

Exploitation du tas : tcache et use-after-free

Les métadonnées du tas sont la primitive d'écriture. Un use-after-free empoisonne le tcache de la glibc pour allouer un chunk à une adresse choisie.

0x7000 · Techniques d'exploitation

Retourner dans la libc : la technique ret2libc

NX est actif et le binaire est minuscule, mais la libc est mappée et pleine de code utile. Fuitez sa base malgré l'ASLR, puis retournez dans system("/bin/sh").

0x7000 · Techniques d'exploitation

Construire une chaîne ROP pas à pas

Avec NX, le shellcode injecté est mort : on réutilise le code existant. Trouver des gadgets, bâtir une chaîne execve avec pwntools, puis voir CET et CFI la casser.

0x1000 · Classes de vulnérabilités

Débordements de tas, use-after-free et double free

Comment les bugs mémoire du tas corrompent l'allocateur et l'état des objets, pourquoi le use-after-free est si dangereux, et les défenses qui les arrêtent.

0x1000 · Classes de vulnérabilités

Les débordements de tampon de pile expliqués aux défenseurs

Pourquoi écrire au-delà d'un tampon de pile est dangereux, les schémas C qui le causent, comment les compilateurs et sanitizers le détectent, et les corrections et mitigations qui le contiennent.