Aller au contenu

Glossaire

Sigreturn-oriented programming (SROP)

Technique de réutilisation de code qui forge une trame de signal pour que l'appel système sigreturn restaure d'un coup tous les registres du processeur depuis des données contrôlées par l'attaquant.

Le sigreturn-oriented programming (SROP) détourne le chemin de restauration de signal du noyau. Lorsqu'un gestionnaire de signal se termine, l'appel système rt_sigreturn restaure l'intégralité de l'état du processeur depuis une trame sigcontext située sur la pile — et le noyau ne vérifie pas que la trame est authentique. Un attaquant capable de placer une trame forgée et de fixer rax au numéro de sigreturn (15 sur x86-64) avant une instruction syscall prend le contrôle de tous les registres d'un coup, y compris rip et rsp.

SROP nécessite bien moins de briques de base qu'une chaîne ROP complète — juste un syscall et un moyen de fixer rax — il brille donc lorsque les gadgets sont rares. Il est contenu par seccomp (en refusant l'appel système visé) et par les shadow stacks qui rejettent le retour détourné. Voir le tutoriel SROP.