Le combat pour rendre l’exploitation de bugs passe entre autres par rendre la réutilisation de code de plus en plus difficile. Pointer Authentication Code (PAC) est une extension apparue avec l’architecture ARMv8.3 en mars 2016 et qui va dans ce sens. Elle est notoirement utilisée dans tous les appareils récents de la marque Apple. Regardons comment cette extension rend effectivement la vie des attaquants plus complexe.
1. Principe
L’idée principale de PAC est d’authentifier des pointeurs se trouvant en mémoire, afin de s’assurer qu’ils soient des pointeurs légitimes – dit différemment qu’ils ne proviennent pas d’une écriture arbitraire par un attaquant. Une des utilisations principales qui en est faite est d’authentifier les pointeurs de retours dans la stack, rendant des techniques telles que le ROP (Return Oriented Programming) [ROP] ou JOP (Jump Oriented Programming) [JOP] beaucoup plus difficiles à exécuter.
Cet article propose de regarder plus en détail le fonctionnement de cette technologie, comment elle est appliquée aujourd’hui dans les systèmes Linux, et les contournements qui ont été documentés dans le passé.
2. Fonctionnement général
Sur les architectures 64 bits, il est commun que l’espace d’adressage virtuel n’utilise pas totalement les 64 bits disponibles. Plus précisément, l’architecture AArch64 découpe les pointeurs...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première