Optimisation Record de la Preuve de Travail kCTF avec AVX512IFMA pour un Bounty de $51 000
Réalisation d'un temps record avec AVX512IFMA pour un bounty de $51 000 En mai 2025, Timothy Herchen et ses coéquipiers de Crusaders of Rust, William Liu (FizzBuzz101) et Savy Dicanosa (Syst3mFailure), ont découvert et exploité une vulnérabilité de type "use-after-free" dans le scheduleur de paquets de Linux. Cette découverte leur a valu un bounty attendu de $51 000 dans le cadre de la compétition kernelCTF organisée par Google. Les étapes de la soumission Pour éviter de distribuer de trop larges récompenses, les organisateurs de kernelCTF limitent le nombre de soumissions éligibles à un bounty. Chaque fenêtre de soumission s'ouvre tous les deux semaines à midi UTC. Seule la première équipe qui parvient à se connecter, exploiter le serveur et soumettre le drapeau via un Google Form reçoit la récompense. Les étapes clés sont les suivantes : Connexion au serveur à 12:00:00 UTC. Résolution du "proof of work" (PoW), une fonction conçue pour prendre quelques secondes à évaluer. Attente du démarrage de l'instance (environ 2,5 secondes). Upload et exécution de l'exploit pour sécuriser le drapeau (Savy a optimisé ce processus à environ 0,55 secondes sans compromettre la fiabilité). Soumission du drapeau au Google Form. Le timestamp détermine le gagnant de la "slot". Notre objectif était de compléter toutes ces étapes plus rapidement que tous les autres participants. Contexte et défis Les équipes de recherche en vulnérabilités professionnelle avaient déjà optimisé leur processus de soumission. Pour la fenêtre de soumission précédente, qui a eu lieu le 2 mai 2025, la première équipe a soumis son drapeau 4,5 secondes après midi. Or, le temps d'attente pour le démarrage de la VM et la résolution du PoW totalisaient déjà 6,5 secondes. En examinant plus attentivement, on découvrait que le drapeau gagnant avait été généré une seconde avant midi. Ce n'était pas de la manipulation du temps, mais une particularité de l'implémentation du serveur. William Liu a sollicité l'aide de Timothy Herchen sur Discord pour optimiser le PoW en vue de la prochaine fenêtre de soumission, le 16 mai. Timothy avait seulement 48 heures pour agir. La fonction de preuve de travail : le VDF "sloth" Le PoW utilisé est une fonction de temps vérifiable (VDF) appelée "sloth", introduite par Lenstra et Wesolowski en 2015. Elle nécessite un calcul de multiplication modulaire sur un entier de 1280 bits. L'implémentation de référence de Google utilisait gmpy, une bibliothèque Python pour les opérations de grande précision. Timothy a traduit cette fonction en C++ pour éliminer le surcoût de liaison externe et a optimisé la squaring de l'entier de 1280 bits. Cela a réduit le temps d'exécution à 1,9 secondes sur un MacBook Pro M1, et à 1,4 secondes sur un Intel Ice Lake haut de gamme. Utilisation d'AVX512IFMA AVX512 est une extension de l'architecture x86 d'Intel, disponible depuis 2016, qui double le nombre et la largeur des registres vectoriels, ajoute des instructions de masquage prédictif et des nouvelles instructions. La sous-extension AVX512 Integer Fused Multiply–Add (AVX512IFMA) est particulièrement utile pour l'arithmétique sur grands entiers. Timothy a reimplementé le calcul de squaring en utilisant AVX512IFMA, ce qui a permis de réduire considérablement le temps de calcul. L'utilisation de 25 limbes de 52 bits, stockés sur des registres de 512 bits, a permis de minimiser les opérations de shuffling. Optimisation supplémentaire Pour saturer pleinement les unités de multiplication, Timothy a introduit un ensemencement de 14 accumulateurs, amenant le temps de résolution à environ 0,32 secondes. En utilisant des instructions inline assembly pour éviter les épuisements des registres vectoriels, il a encore diminué ce temps à 0,23 secondes. Enfin, en substituant des charges mémoire par l'instruction valignq, la latence dus à la charge de fenêtres a été éliminée, ramenant le PoW à 0,21 secondes. Jour J : Le 16 mai 2025 Le jour de la soumission, le 16 mai à 4:30 heure du Pacifique, William et Savy ont préparé l'environnement sur un serveur Zen 5 Google Cloud aux Pays-Bas, proche géographiquement du serveur de soumission de Google. Une heure avant la connexion, ils ont enregistré une requête POST interceptée, soumise avec un drapeau factice pour optimiser le processus de soumission. À 5:00 heure du Pacifique, ils ont connecté le serveur, résolu le PoW, exécuté l'exploit de Savy, inséré le drapeau dans la requête et envoyé le tout. Leur soumission a pris 3,6 secondes, battant le record absolu de kernelCTF. Les organisateurs ont confirmé leur éligibilité au bounty, provoquant un soupir collectif de soulagement. Conclusion La compétition kernelCTF a été un défi stimulant, où l'optimisation au niveau matériel a fait toute la différence. Timothy Herchen remercie chaleureusement ses coéquipiers Savy et William a permis de gagner un bounty de $51 000, réparti en $21 337 de récompense de base, $10 000 pour des professionnels Cet exploit a suscité une grande admiration dans la communauté de la sécurité informatique. Alexander Yee, auteur de y-cruncher, a noté que l'efficacitéX512IFMA a aussi été saluée pour sa capacité à équilibrer vitesse et précision dans les calculs de grands entiers, rendant ce genre de tâches beaucoup plus révolutionnaires à la sécurité des systèmes, a une fois de plus prouvé son expertise en combinant ingéniosité et optimisation technique. Cette victoire renforce leur position d'él, une équipe decherche en sécurité reconnue pour ses travaux sur les failles critiques de systèmes d'exploitation et de logiciels. Leur approach combine rigueur académique et innovation pratique
