
CVE-2026-6307 PoC: Longinus - 2 Boundaries in One Bug https://nebusec.ai/research/v8-cve-2026-6307-writeup/)
Mieux connu sous le nom de 'Longinus' : 2 frontières en un seul bug
Dépôt : https://github.com/J4ck3LSyN-Gen2/CVE-2026-6307-Longinus
Rapport détaillé : OS-IS-CVE-2026-6307-07-2026.md
Write-up technique : Nebula Security - Longinus: 2 Boundaries in One Bug
[!WARNING] Ce code est fourni TEL QUEL à des fins éducatives et de recherche uniquement. N'utilisez pas ce PoC sur des systèmes de production, des environnements partagés ou des cibles non autorisées.
- Cet exploit démontre une vulnérabilité critique d'exécution de code à distance (RCE) (CVE-2026-6307) qui peut compromettre entièrement le sandbox du renderer Chrome.
- L'exécution ou l'hébergement de ce code peut déclencher des détections antivirus, des alertes de surveillance de sécurité ou des conséquences juridiques en cas d'utilisation abusive.
- Les auteurs et les mainteneurs du dépôt déclinent toute responsabilité en cas de dommages, d'utilisation abusive ou d'activité illégale résultant de ce code.
- À utiliser exclusivement dans des environnements de laboratoire isolés avec une autorisation appropriée. Destiné uniquement à la recherche défensive, à l'analyse de vulnérabilités et aux tests d'équipe bleue.
Ce dépôt contient une Preuve de concept (PoC) pour CVE-2026-6307 (« Longinus »), une vulnérabilité de confusion de type de gravité élevée dans le compilateur TurboFan de Google V8. Le bug provient d'une comparaison d'égalité incomplète dans FrameStateFunctionInfo lors de l'inlining d'appels JavaScript-vers-WebAssembly, en omettant spécifiquement le champ signature_ de JSToWasmFrameStateFunctionInfo.
Cette faille permet une fusion incorrecte des nœuds FrameState avec des types de retour différents (externref vs i64). Lors de la déoptimisation paresseuse, le déoptimiseur interprète mal les registres de retour, ce qui fournit de puissantes primitives de lecture/écriture arbitraire :
addrof(target) - Faire fuiter l'adresse d'un objet JavaScript sous forme de BigInt.fakeobj(addr) - Matérialiser un faux objet JavaScript à une adresse arbitraire.Ces primitives franchissent à la fois les limites du sandbox de tas V8 et du sandbox du renderer en une seule vulnérabilité lorsqu'elles sont combinées à des techniques complémentaires appropriées.
Impact : Exécution de code à distance (RCE) dans le processus renderer sandboxisé via du JavaScript malveillant (par exemple, une page web conçue à cet effet).
FrameState qui intègrent JSToWasmFrameStateFunctionInfo.==) de FrameStateFunctionInfo ne compare pas la signature de la fonction WebAssembly (signature_).FrameState dont les types de retour ne correspondent pas.externref interprété à tort comme i64 → les bits du pointeur fuient sous forme de BigInt (addrof).i64 interprété à tort comme externref → les bits entiers sont matérialisés comme référence étiquetée (fakeobj).Voir le write-up complet de Nebula Security et le rapport d'analyse joint pour les schémas, les extraits IR de TurboFan et le comportement du déoptimiseur.
d8 correspondant datant d'environ mars–juin 2026).--allow-natives-syntax --expose-wasmd8 de débogage avec --turbo-dynamic-map-checks ou similaire pour le débogage.# Using d8 shell
./d8 --allow-natives-syntax --expose-wasm poc.js
Comportement attendu (sur un build vulnérable) :
addrof réussie d'un objet factice.fakeobj réussie (le contrôle d'identité passe).Remarque : Le RCE complet nécessite une ingénierie supplémentaire (calcul d'offsets, interaction WASM/GC, évasion du sandbox). Ce PoC se concentre sur les primitives de base.
La règle .yar incluse peut être utilisée dans les outils de sécurité pour identifier le motif du PoC dans des scripts ou en mémoire.
Avertissement : Ce dépôt est fourni à des fins éducatives, défensives et de recherche uniquement. Ne l'utilisez pas sur des systèmes non autorisés. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.
Pour toute question, contribution ou développement de variantes, ouvrez une issue ou une PR.
Dernière mise à jour : juillet 2026
| Fichier | Description |
|---|
poc.js | PoC principal démontrant les primitives addrof et fakeobj + démo de lecture/écriture de base. |
gen.py | Script d'aide pour générer des variantes du PoC ou l'échafaudage du payload. |
val.py | Utilitaires de validation et de test pour les primitives. |
cve-2026-6307_d8_execution.yml | Configuration / workflow pour exécuter le PoC dans un shell V8 d8. |
cve-2026-6307_longinus_poc.yar | Règle YARA pour détecter la signature du PoC ou des modèles associés. |