🔍 Contexte
Publié le 10 juillet 2026 par Nebula Security sur leur blog de recherche, cet article présente une analyse technique approfondie de CVE-2026-10702, une vulnérabilité découverte par leur agent d’IA VEGA dans le compilateur JIT IonMonkey de SpiderMonkey, le moteur JavaScript de Firefox.
🐛 Nature de la vulnérabilité
La vulnérabilité est une miscompilation JIT (Just-In-Time) résultant d’une modélisation incorrecte des effets de bord dans l’instruction MIR MObjectToIterator. Lorsque skipRegistration_ est activé (via le remplacement scalaire de Object.keys()), l’alias set est incorrectement défini comme un simple chargement (AliasSet::Load(ObjectFields | Element)), alors que l’instruction peut en réalité allouer un nouveau buffer de propriétés dynamiques.
⚙️ Mécanisme d’exploitation
La chaîne d’exploitation repose sur plusieurs étapes :
- Scalar Replacement :
ObjectKeysReplacerremplaceObject.keys(obj)parMObjectToIteratoravecskipRegistration=true - GVN (Global Value Numbering) : considère que
MSlots(obj)avant et aprèsMObjectToIteratorsont équivalents, éliminant le second appel - Use-After-Free : le pointeur
Slots#1devient un dangling pointer après la réallocation du buffer de propriétés - Résolution paresseuse : les propriétés
Function.name,Function.lengthetFunction.prototypesont résolues lazily viafun_resolve, déclenchantNativeDefineDataPropertyet potentiellement une réallocation - Primitives addrof/fakeobj : via un spray mémoire contrôlé, la lecture hors-limites permet de récupérer un pointeur de Hidden Class, convertible en pointeur d’objet pour créer un fake Uint8Array et obtenir une lecture/écriture mémoire arbitraire
🎯 Impact
- Exécution de code arbitraire dans le processus renderer de Firefox
- Exploitation confirmée également sur Tor Browser
- Première CVE SpiderMonkey JIT après la mise à jour pré-Pwn2Own de Firefox
🛠️ Correction
La correction consiste à supprimer la méthode getAliasSet() personnalisée de MObjectToIterator, forçant l’utilisation d’un alias set conservateur par défaut. Publiée dans Firefox 151.0.3 le 2 juin 2026.
📅 Timeline
- 20 mai 2026 : Rapport soumis à Mozilla avec preuve d’exploitation
- 20 mai 2026 : Accusé de réception et identification de la cause racine par Mozilla
- 2 juin 2026 : Correctif publié dans Firefox 151.0.3
- 10 juillet 2026 : Publication de l’article
📄 Type d’article
Publication de recherche technique offensive détaillant une vulnérabilité originale, son mécanisme d’exploitation complet et la correction appliquée, dans le cadre d’une divulgation coordonnée.
🧠 TTPs et IOCs détectés
TTP
- T1203 — Exploitation for Client Execution (Execution)
- T1189 — Drive-by Compromise (Initial Access)
IOC
Malware / Outils
- VEGA (tool)
🟡 Indice de vérification factuelle : 39/100 (moyenne)
- ⬜ nebusec.ai — source non référencée (0pts)
- ✅ 19177 chars — texte complet (fulltext extrait) (15pts)
- ✅ 1 IOC(s) (6pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 2 TTP(s) MITRE (8pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ 0/1 CVE(s) confirmée(s) (0pts)
🔗 Source originale : https://nebusec.ai/research/ionstack-part-1-cve-2026-10702/