Glossaire
Branch target identification (BTI)
Une fonctionnalité ARMv8.5 qui force les branchements indirects à atterrir sur une instruction de landing pad bti, invalidant les gadgets en milieu de fonction sur le forward edge.
La branch target identification (BTI) est une fonctionnalité AArch64 qui protège le forward edge du flux de contrôle. Lorsqu'elle est activée, un branchement indirect (br, blr) ne peut transférer le contrôle qu'à une instruction bti, que le compilateur place aux points d'entrée légitimes. Un gadget situé au milieu d'une fonction ne commence pas par bti, si bien que l'utiliser comme cible de branchement indirect déclenche une exception Branch Target.
BTI supprime la vaste réserve de gadgets en milieu de fonction sur laquelle reposent le jump-oriented programming et le return-oriented programming, bien qu'elle soit à granularité grossière : elle autorise n'importe quel landing pad valide, de sorte que la réutilisation de fonctions entières peut rester possible. Elle complète l'authentification de pointeurs, qui protège le backward edge, et les deux s'activent avec -mbranch-protection=standard. Voir PAC et BTI.