labfy-investigation/docs/architecture/SANDBOX_TOOL_EXECUTION.md

1.7 KiB

Exécution d'outils sandboxée V1

État : CURRENT local pour la frontière et ses tests SPECIMEN; disponibilité d'exécution dépendante de bwrap et de la Policy.

ToolRegistry porte une identité stable explicite, distincte du nom du binaire, ses contrats d'entrée/sortie, sa classe de risque, disponibilité documentaire, disponibilité détectée et admission Policy. La détection utilise uniquement argv bornés (--version, puis --help); elle n'installe rien.

sandbox.exec n'accepte pas un shell ni une chaîne de commande. Les arguments sont une liste structurée, l'exécutable est choisi dans le registre et les artefacts sont fournis via un identifiant opaque, matérialisés en lecture seule sous /input. Les sorties déclarées restent sous /output avec une provenance bornée. NUL, chemins hôte, ~, traversées, outil inconnu et sortie non déclarée sont refusés.

La toolbox Podman rootless est une frontière supplémentaire pour les outils provisionnés après Gate A/B. Elle ne remplace pas le contrat sandbox.exec des outils déjà enregistrés : son adapter déclaratif, son image immuable et l'exécution offline sont distincts.

L'exécution exige Bubblewrap rootless avec réseau isolé, environnement nettoyé, répertoires système en lecture seule, /proc isolé, /dev minimal, timeout et limite combinée de sortie. L'absence ou l'échec de bwrap retourne UNAVAILABLE; il n'existe jamais de fallback en subprocess hôte libre.

Les documents locaux sont mis en cache XDG privé et borné comme UNTRUSTED_DATA. Les lire, y compris pour un outil dual-use, ne le rend pas exécutable et ne transforme aucune instruction documentée en permission.