Stage - Utilisation de la mémoire taguée et protection d'instruction dans un processeur H/F
Les fuites spatiales et temporelles de mémoires sont la principale source de vulnérabilités des programmes depuis une quarantaine d'années. Ce terme englobe les différents types d'attaques par buffer overflow (stack, heap , data overflow) et les use after free, double free et autres dangling pointers [1].
De nombreuses contremesures ont été proposées (canaris, shadow stack, utilisation de capabilités (CHERI)) avec plus ou moins de succès et des impacts sur les performances souvent importantes. Une approche permettant au processeur de gérer efficacement ces fuites est la mémoire taguée qui peut tirer efficacement profit du chiffrement de la DRAM [2] tel qu'il est effectué sur les processeurs que nous développons au laboratoire. Cette approche nécessite de stocker des identifiants de pointeurs pour chaque donnée mais pour une raison d'uniformité de la mémoire ces identifiants sont aussi implémentés pour les instructions sans toutefois être utilisés.
L'objectif du stage sera d'exploiter la présence de ces métadonnées auprès des instructions pour mettre en place des signatures du flot de contrôle du programme et de vérification du bon décodage et de la bonne exécution de chaque instruction. Une augmentation de la fiabilité des processeurs face aux erreurs et aux injection de fautes est attendue.
Le travail du stagiaire sera une prise en main d'un processeur d'application [4] sur l'ISA open source RISC-V pour déterminer comment faire la génération et la vérification des signatures. Des travaux dont on pourra s'inspirer ont déjà été publiés qui utilisent la trace du debug pour ces vérifications [3]. Ensuite, une passe backend du compilateur LLVM devra permettre le calcul de ces signatures et leur introduction dans le binaire du programme.
Des compétences en architecture des processeurs et en compilation sont donc demandées et éventuellement en design numérique sur FPGA.
Références :
[1] M. A. Butt, Z. Ajmal, Z. I. Khan, M. Idrees, et Y. Javed, « An In-Depth Survey of Bypassing Buffer Overflow Mitigation Techniques », Appl. Sci., vol. 12, no 13, Art. no 13, janv. 2022, doi: 10.3390/app12136702.
[2] P. Nasahl, R. Schilling, M. Werner, J. Hoogerbrugge, M. Medwed, et S. Mangard, « CrypTag: Thwarting Physical and Logical Memory Vulnerabilities using Cryptographically Colored Memory », ArXiv201206761 Cs, mars 2021, doi: 10.1145/3433210.3453684.
[3] A. Zgheib, O. Potin, J.-B. Rigaud, et J.-M. Dutertre, « CIFER: Code Integrity and control Flow verification for programs Executed on a RISC-V core », in 2023 IEEE International Symposium on Hardware Oriented Security and Trust (HOST), mai 2023, p. 100‑110. doi: 10.1109/HOST55118.2023.10133542.
[4] Charles Papon. NaxRiscv: A FPGA an out of order 32/64 bit RISCV CPU. https://github.com/SpinalHDL/NaxRiscv.
De formation Bac +4, Ecole d'ingénieur.