🗓️ 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 champfdansprint_gvars(). - Le nom de section PE brut (8 octets) est interpolé sans sanitisation via
%.*sdans la commandef. - Un
\ndans 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
sharbitraire. - 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
ObjectInputFilterallow-list, mais le client Ghidra n’en installe aucun. - Un fichier
.gprmalveillant contenant une URLghidra://dans son XMLprojectStateforce 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(dansjython-standalone-2.7.4.jar), contournant le correctifreadResolve()dePyFunctionintroduit 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 Integeraprè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.
📄 Type d’article
Il s’agit d’une publication de recherche technique offensive à visée de divulgation responsable (coordinated disclosure), dont le but principal est de démontrer la capacité des LLM à découvrir des vulnérabilités complexes dans des outils de sécurité largement utilisés.
🧠 TTPs et IOCs détectés
TTP
- T1203 — Exploitation for Client Execution (Execution)
- T1211 — Exploitation for Defense Evasion (Defense Evasion)
- T1059 — Command and Scripting Interpreter (Execution)
- T1190 — Exploit Public-Facing Application (Initial Access)
IOC
- Fichiers :
jython-standalone-2.7.4.jar
Malware / Outils
- ysoserial (tool)
🟡 Indice de vérification factuelle : 46/100 (moyenne)
- ⬜ open.substack.com — source non référencée (0pts)
- ✅ 5533 chars — texte complet (fulltext extrait) (15pts)
- ✅ 1 IOC(s) (6pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 4 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://open.substack.com/pub/calif/p/mad-bugs-all-your-reverse-engineering?r=q9u24