
Laboratoire pédagogique démontrant les techniques d'évasion de sandbox d'expressions JavaScript et l'évolution des correctifs à travers plusieurs versions vulnérables de sandbox, avec des payloads et une analyse AST.
Un environnement expérimental minimal pour démontrer l'évasion de sandbox d'expressions JavaScript et l'évolution des correctifs.
À travers plusieurs versions du sandbox, on passe de :
Totalement évadable → correction de
this→ correction du destructuring
Tout en conservant de nouvelles voies de contournement, afin de comprendre le jeu entre vulnérabilités et correctifs dans le monde réel.
.
├── payload.js # Divers payloads d'attaque
├── sandbox_v0.js # Version originale vulnérable
├── sandbox_v1.js # Correction de la chaîne this
├── sandbox_v2.js # Correction du destructuring
Nous voulons simuler cette réalité :
Et ainsi de suite.
Ce projet n'a pas pour but de créer un VM réellement sécurisé. Il vise plutôt à observer :
comment chaque correctif « apparemment raisonnable » est percé par la technique suivante.
npm install vm2 acorn acorn-walk
node sandbox_vX.js
Remplacez X par 0 / 1 / 2.
payload.js intègre quatre méthodes d'accès :
| Nom | Technique |
|---|---|
| CVE-2025-68613 / this | Obtenir process via this |
| CVE-2026-25049 / destructuring | Obtenir constructor via la déstructuration d'objets |
| Reflect.get | Utilisation de l'API Reflect |
| Dynamic Reflect | Accès dynamique aux propriétés |
Caractéristiques :
thisRésultat : Tous les payloads passent.
L'attaquant est aux anges.
Changements :
"use strict".call(undefined)Ainsi :
this === undefined
L'attaquant hoche la tête et poursuit par un autre chemin.
Nouveautés :
ObjectPatternconstructorLes correctifs de type liste noire présentent généralement :
✔ Correction de chemins explicites ✔ Coût faible ✔ Déploiement facile
Mais en même temps :
❌ Surface de défense limitée ❌ Facilement contournés par d'autres méthodes d'accès sémantiquement équivalentes
C'est précisément pour cela que des sandbox comme vm2 ont historiquement connu des évasions récurrentes.