Je lis sur le fonctionnement des exploits, et il semble que beaucoup d'entre eux fonctionnent en écrasant l'adresse de retour sur la pile. Beaucoup d'efforts ont été déployés pour rendre cela plus difficile (Canaries de pile, ASLR, DEP, etc), mais il me semble qu'il serait plus facile pour les fabricants de matériel d'ajouter un registre, accessible uniquement par les instructions call et ret, cela tiendrait l'adresse de retour. De cette façon, l'adresse de retour n'a pas pu être écrasée par un dépassement de tampon par définition. Parce que call et ret sont toujours présents et fonctionnent toujours comme dans les processeurs d'aujourd'hui (la seule différence est où ils stockent l'adresse de retour), il me semble qu'il n'y aurait pas trop de problèmes de compatibilité. Et puisque vous utilisez un registre au lieu de RAM pour accéder à l'adresse, l'impact sur les performances serait probablement positif (quoique insignifiant).Utiliser un registre séparé pour stocker l'adresse de retour?
Intel dispose apparemment de l'espace nécessaire pour allouer plus de registres à des fins de sécurité, puisque MPX est implémenté malgré le besoin de deux registres supplémentaires. Alors pourquoi ne pas ajouter un registre spécial pour stocker l'adresse de retour?
Ce n'est pas une idée totalement malsaine, j'ai lu à ce sujet quelque part (malheureusement, je ne me souviens pas où). L'éléphant dans la pièce est que nous avons besoin d'une structure de pile pour permettre des appels de fonction arbitrairement imbriqués. Une pile call/ret séparée (c'est l'idée dont je parlais précédemment) semble plus robuste. Les problèmes de compatibilité sont inévitables, certains outils dépendent de la façon dont la pile est remplie pendant les appels de fonction, mais je crois que nous pouvons nous permettre (encore une autre) période de transition. –
Alors, comment avez-vous résolu les appels imbriqués? (excepté le stockage de la valeur dans la mémoire, qui peut ensuite être manipulée par le code) – Ped7g
L'avantage de performance d'avoir une adresse de retour sur puce peut être atteint par un [cache d'adresse de retour] (https: //priorart.ip. com/IPCOM/000108056) pour prédire le résultat de l'instruction RET. –