Série MAD Bugs : RCE découvertes dans Ghidra, radare2, IDA Pro et Binary Ninja via IA

🗓️ Contexte Publié le 21 avril 2026 sur le blog Substack de calif.io, cet article s’inscrit dans la série MAD Bugs (avril 2026) et fait suite à deux divulgations précédentes : un 0-day dans radare2 et un auth bypass dans le serveur Ghidra de la NSA. Les chercheurs présentent ici quatre nouvelles vulnérabilités d’exécution de code arbitraire (RCE), toutes découvertes à l’aide des modèles d’IA Claude ou Codex. 🔍 Vulnérabilités divulguées radare2 — Incomplete Fix / PDB Section Name Injection (issue #25752) Le correctif précédent (issue #25731) avait encodé en base64 le champ fN, mais avait omis le champ f dans print_gvars(). Le nom de section PE brut (8 octets) est interpolé sans sanitisation via %.*s dans la commande f. Un \n dans le nom de section termine le commentaire # et injecte une nouvelle commande r2. Un stager de type HITCON CTF 2017 “BabyFirst Revenge” permet de transformer des écritures de 7 octets en exécution sh arbitraire. Fix livré immédiatement par l’équipe radare2 après signalement. PoC : https://github.com/califio/publications/tree/main/MADBugs/radare2-pdb-section-rce Ghidra (NSA) — RMI Client Deserialization RCE (toutes versions ≥ 9.1) Le serveur Ghidra dispose d’un ObjectInputFilter allow-list, mais le client Ghidra n’en installe aucun. Un fichier .gpr malveillant contenant une URL ghidra:// dans son XML projectState force le client à se connecter silencieusement à un serveur attaquant. Le premier appel RMI (reg.list()) est effectué avant toute authentification et sans filtre de désérialisation. Chaîne d’exploitation originale via org.python.core.PyMethod (dans jython-standalone-2.7.4.jar), contournant le correctif readResolve() de PyFunction introduit par Jython 2.7.4. La chaîne aboutit à un interpréteur CPython 2.7 bytecode (21 octets) appelant Runtime.getRuntime().exec(). Flux d’exploitation : PriorityQueue.readObject → Proxy(Comparator).compare → PyMethod.__call__ → __builtin__.eval → PyBytecode → Runtime.exec() La victime voit une erreur PySingleton cannot be cast to Integer après l’exécution du payload. PoC : https://github.com/califio/publications/tree/main/MADBugs/ghidra-rmi-rce IDA Pro (Hex-Rays) & Binary Ninja Sidekick (Vector 35) Deux vulnérabilités RCE arbitraires sous embargo de divulgation coordonnée. Toutes deux se déclenchent sur le workflow standard « ouvrir un fichier reçu ». Détails, PoCs et logs de prompts à publier à la levée des embargos. 🤖 Rôle de l’IA L’ensemble des vulnérabilités a été identifié par Claude ou Codex. L’IA a notamment analysé le patch de radare2 et identifié le second champ non corrigé de manière autonome, produisant un PoC fonctionnel avant la fin du débat humain sur la pertinence de la recherche assistée par IA. ...

24 avril 2026 · 3 min
Dernière mise à jour le: 26 avril 2026 📝