Points Clés
- Fence est un outil en ligne de commande qui encapsule n'importe quelle commande dans un sandbox, bloquant l'accès réseau par défaut et restreignant les écritures sur le système de fichiers.
- L'outil utilise les technologies de sandboxing natives du système d'exploitation, spécifiquement sandbox-exec sur macOS et bubblewrap sur Linux, pour appliquer l'isolation.
- Le filtrage réseau est géré via un proxy HTTP/SOCKS local, qui nécessite que les applications respectent la variable d'environnement HTTP_PROXY.
- Il a été développé à l'origine pour sandboxer les services en cours de test lors des répétitions de tests d'API, bloquant les connexions localhost pour forcer l'utilisation de mocks.
- Fence offre un mode de surveillance qui permet aux développeurs de voir ce qui serait bloqué sans appliquer réellement les restrictions.
- L'outil peut importer des ensembles de permissions existants depuis d'autres outils, tels que Claude Code, à l'aide d'une commande d'importation spécifique.
Une Nouvelle Couche de Sécurité pour la Ligne de Commande
Les développeurs exécutent fréququemment des commandes présentant des risques inhérents, de l'installation de nouveaux paquets à l'exécution de scripts provenant de dépôts inconnus. Un nouvel outil en ligne de commande vise à atténuer ces risques en encapsulant n'importe quelle commande dans un environnement sandbox.
Nommé Fence, l'outil bloque l'accès réseau par défaut et restreint les écritures sur le système de fichiers. Cela crée un environnement contrôlé pour l'exécution de code, prévenant les effets secondaires non désirés ou la transmission non autorisée de données.
L'objectif principal est de fournir un filet de sécurité pour exécuter du code semi-fiable. Qu'il s'agisse d'un script de build, d'une installation de paquet ou d'un outil qui pourrait "phoner home", Fence offre un moyen d'exécuter ces commandes avec un comportement prévisible et limité.
Fonctionnalités Principales et Modes
Fence fonctionne en interceptant les appels système et les requêtes réseau, isolant efficacement la commande cible du système hôte. Par défaut, il bloque toutes les connexions réseau sortantes et empêche les opérations d'écriture en dehors d'un répertoire désigné.
L'outil propose plusieurs modes opérationnels pour s'adapter à différents scénarios :
- Mode par défaut : Bloque tout le trafic réseau et restreint les écritures sur le système de fichiers.
- Mode Modèle : Applique des règles préconfigurées, telles que l'autorisation de registres spécifiques pour les gestionnaires de paquets.
- Mode Surveillance : Exécute la commande tout en enregistrant ce qui serait bloqué, offrant une visibilité sans application des restrictions.
Par exemple, l'exécution de fence curl https://example.com entraîne une connexion bloquée. En revanche, l'utilisation d'un modèle avec fence -t code -- npm install autorise l'accès aux registres npm nécessaires tout en maintenant les autres restrictions.
"J'ai rapidement compris que cela pourrait être un outil généraliste qui serait également utile en tant que gestionnaire de permissions pour les agents CLI."
— Développeur de Fence
Architecture Technique
L'outil s'appuie sur des technologies de sandboxing natives du système d'exploitation pour appliquer l'isolation. Sur macOS, il utilise sandbox-exec, tandis que sur Linux, il repose sur bubblewrap. Ces mécanismes sous-jacents fournissent une base solide pour restreindre les capacités des processus.
Pour le filtrage réseau, Fence emploie un proxy HTTP/SOCKS local. Ce proxy intercepte les requêtes réseau et applique des règles de filtrage basées sur les domaines. Cependant, cette approche présente une limitation spécifique : elle nécessite que les programmes étant sandboxés respectent la variable d'environnement HTTP_PROXY.
L'architecture est conçue pour être légère et non intrusive, utilisant des utilitaires système standard plutôt que de nécessiter des modules noyau ou des couches de virtualisation complexes.
Cas d'Utilisation et Applications
L'outil a été conçu à l'origine pour résoudre un problème spécifique dans les tests d'API. Le développeur derrière Fence travaille sur Tusk Drift, un système d'enregistrement et de répétition de trafic réel en tant que tests d'API. Lors des répétitions de tests, il était nécessaire de sandboxer le service en cours de test pour bloquer les connexions sortantes localhost vers des bases de données comme Postgres et Redis, forçant l'application à utiliser des mocks au lieu de services réels.
Cette utilité s'étend à des cas d'utilisation plus larges, notamment avec les agents de codage IA. Exécuter des agents avec moins d'invites de permissions interactives peut être risqué. Fence permet aux développeurs de sandboxer ces agents, réduisant le risque d'actions non désirées.
Par exemple, un agent peut être exécuté avec une commande comme : fence -t code -- claude --dangerously-skip-permissions. De plus, Fence peut importer des ensembles de permissions existants, tels que ceux de Claude Code, à l'aide de la commande fence import --claude.
"J'ai rapidement compris que cela pourrait être un outil généraliste qui serait également utile en tant que gestionnaire de permissions pour les agents CLI."
Limites et Considérations
Si Fence fournit une couche de sécurité précieuse, ce n'est pas une solution miracle. La documentation précise explicitement qu'il n'est pas une forte protection contre les logiciels malveillants. Des codes malveillants sophistiqués peuvent trouver des moyens de contourner le filtrage basé sur le proxy ou d'exploiter d'autres vulnérabilités du système.
La dépendance au filtrage basé sur le proxy signifie que les applications qui ne respectent pas la variable d'environnement HTTP_PROXY n'auront pas leur trafic réseau filtré. C'est une considération cruciale pour les évaluant l'outil pour leur pile technique spécifique.
Malgré ces limites, Fence représente une étape pratique vers une exécution plus sûre en ligne de commande. Il offre un équilibre entre sécurité et utilisabilité, permettant aux développeurs d'exécuter des commandes nécessaires mais potentiellement risquées avec une plus grande confiance.
Perspectives d'Avenir
Fence aborde un point de douleur courant dans les flux de travail de développement modernes : la nécessité d'exécuter du code non fiable ou semi-fiable sans compromettre l'intégrité du système. En fournissant une interface en ligne de commande simple à des technologies de sandboxing puissantes, il abaisse la barrière à l'entrée pour une exécution de code sécurisée.
L'outil est actuellement disponible pour macOS et Linux, couvrant la majorité des environnements de développement. Sa nature open-source invite les commentaires de la communauté et les contributions potentielles pour étendre ses capacités.
À mesure que les flux de travail de développement intègrent de plus en plus des agents IA et des scripts tiers, des outils comme Fence deviendront probablement des composants essentiels d'une boîte à outils de développement sécurisée. Le développeur recherche activement les commentaires et les cas d'utilisation de la communauté.
Questions Fréquemment Posées
Quel est l'objectif principal de l'outil Fence ?
Fence est conçu pour exécuter des commandes dans un environnement sandbox, bloquant l'accès réseau par défaut et restreignant les écritures sur le système de fichiers. Cela permet aux développeurs d'exécuter du code semi-fiable, tel que des installations de paquets ou des scripts de build, avec des effets secondaires contrôlés.
Comment Fence réalise-t-il son sandboxing ?
Il s'appuie sur des technologies de sandboxing natives du système d'exploitation : sandbox-exec sur macOS et bubblewrap sur Linux. Pour le filtrage réseau, il utilise un proxy HTTP/SOCKS local pour bloquer ou autoriser des domaines spécifiques, bien que cela nécessite que l'application cible respecte les paramètres de proxy.
Quels sont les cas d'utilisation principaux de Fence ?
L'outil est utile pour exécuter des agents de codage IA avec un risque réduit, exécuter en toute sécurité des dépôts inconnus et bloquer les outils qui "phoner home". Il a été spécifiquement créé pour sandboxer les services lors des répétitions de tests d'API, empêchant les connexions aux bases de données locales.
Quelles sont les limites de Fence ?
Il n'est pas considéré comme une forte protection contre les logiciels malveillants sophistiqués. De plus, son filtrage basé sur le proxy ne fonctionne que si le programme étant sandboxé respecte la variable d'environnement HTTP_PROXY, ce qui n'est pas universel.










