Absortio

Email → Summary → Bookmark → Email

GitHub - Use-Tusk/fence: Lightweight, container-free sandbox for running commands with network and filesystem restrictions

Extracto

Lightweight, container-free sandbox for running commands with network and filesystem restrictions - Use-Tusk/fence

Resumen

Resumen Principal

Fence es una herramienta de seguridad robusta diseñada para envolver comandos de la línea de comandos en un sandbox configurable, aislando su ejecución para mitigar riesgos. Su función principal es bloquear el acceso a la red por defecto y restringir operaciones del sistema de archivos basándose en reglas predefinidas. Esto lo convierte en una solución ideal para ejecutar código semi-confiable, como instalaciones de paquetes, scripts de construcción, trabajos de CI o la exploración de repositorios desconocidos, proporcionando un entorno controlado que minimiza los efectos secundarios indeseados. Fence también se posiciona como una defensa en profundidad complementaria para los agentes de codificación de IA, actuando como un gestor de permisos para las operaciones de sus agentes CLI. Permite a los usuarios definir reglas específicas para el acceso a la red, operaciones de lectura/escritura en el sistema de archivos y bloqueo de comandos peligrosos, ofreciendo un control granular sobre el comportamiento de las aplicaciones. Su capacidad para monitorear violaciones en tiempo real y la disponibilidad de plantillas preconfiguradas simplifican la implementación de entornos seguros.

Elementos Clave

  • Aislamiento de Red Granular: Fence implementa un bloqueo total del acceso a la red saliente por defecto, una característica fundamental para la seguridad. Sin embargo, permite a los usuarios definir una lista blanca de dominios específicos a través de un archivo de configuración (~/.fence.json), como private.company.com, lo que habilita la conectividad necesaria sin comprometer el aislamiento general.
  • Restricciones de Sistema de Archivos y Bloqueo de Comandos: La herramienta proporciona un control detallado sobre las operaciones del sistema de archivos, permitiendo configurar rutas específicas para permisos de lectura/escritura (e.g., allowWrite: ["."]). Además, ofrece la capacidad de denegar comandos peligrosos como rm -rf / o acciones sensibles como git push y npm publish, añadiendo una capa vital de protección contra manipulaciones accidentales o maliciosas.
  • Plantillas Predefinidas y Monitoreo de Violaciones: Para facilitar su uso, Fence incluye plantillas incorporadas (como la plantilla code que permite acceso a npm/pypi) que encapsulan conjuntos de reglas preconfiguradas para flujos de trabajo comunes. Complementariamente, su modo de monitoreo (-m) permite el registro en tiempo real de cualquier solicitud o acción que viole las reglas del sandbox, ofreciendo visibilidad inmediata sobre posibles problemas de seguridad.
  • Compatibilidad Multiplataforma y Filtrado SSH: Fence está diseñado para funcionar tanto en macOS (utilizando sandbox-exec) como en Linux (con bubblewrap y socat para la red, y bpftrace opcional para visibilidad de violaciones). También incorpora una característica avanzada de filtrado de comandos SSH, permitiendo a los usuarios controlar qué hosts y comandos específicos están permitidos ejecutarse a través de conexiones SSH, lo que es crucial para entornos de desarrollo y producción seguros.

Análisis e Implicaciones

Fence representa una herramienta estratégica para reforzar la seguridad en el desarrollo de software y operaciones de TI, minimizando la superficie de ataque de procesos CLI y agentes automatizados. Al imponer límites estrictos por defecto, fomenta una cultura de permisos explícitos, lo que es fundamental para la integridad de los sistemas y la protección de datos sensibles. Su arquitectura contribuye significativamente a la resiliencia operativa y la mitigación de riesgos asociados con el código de terceros o el uso de IA en entornos de producción.

Contexto Adicional

Inspirado por sandbox-runtime de Anthropic, Fence se integra tanto como herramienta CLI como paquete de Go, ofreciendo flexibilidad para diversas necesidades de desarrollo y automatización de seguridad en distintos sistemas operativos.

Contenido

Fence Banner

GitHub Release

Fence wraps commands in a sandbox that blocks network access by default and restricts filesystem operations based on configurable rules. It's most useful for running semi-trusted code (package installs, build scripts, CI jobs, unfamiliar repos) with controlled side effects, and it can also complement AI coding agents as defense-in-depth.

You can also think of Fence as a permission manager for your CLI agents.

# Block all network access (default)
fence curl https://example.com  # → 403 Forbidden

# Allow specific domains
fence -t code npm install  # → uses 'code' template with npm/pypi/etc allowed

# Block dangerous commands
fence -c "rm -rf /"  # → blocked by command deny rules

Install

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/Use-Tusk/fence/main/install.sh | sh
Other installation methods

Go install:

go install github.com/Use-Tusk/fence/cmd/fence@latest

Build from source:

git clone https://github.com/Use-Tusk/fence
cd fence
go build -o fence ./cmd/fence

Additional requirements for Linux:

  • bubblewrap (for sandboxing)
  • socat (for network bridging)
  • bpftrace (optional, for filesystem violation visibility when monitoring with -m)

Usage

Basic

# Run command with all network blocked (no domains allowed by default)
fence curl https://example.com

# Run with shell expansion
fence -c "echo hello && ls"

# Enable debug logging
fence -d curl https://example.com

# Use a template
fence -t code -- claude  # Runs Claude Code using `code` template config

# Monitor mode (shows violations)
fence -m npm install

# Show all commands and options
fence --help

Configuration

Fence reads from ~/.fence.json by default:

{
  "extends": "code",
  "network": { "allowedDomains": ["private.company.com"] },
  "filesystem": { "allowWrite": ["."] },
  "command": { "deny": ["git push", "npm publish"] }
}

Use fence --settings ./custom.json to specify a different config.

Import from Claude Code

fence import --claude -o ~/.fence.json

Features

  • Network isolation - All outbound blocked by default; allowlist domains via config
  • Filesystem restrictions - Control read/write access paths
  • Command blocking - Deny dangerous commands like rm -rf /, git push
  • SSH Command Filtering - Control which hosts and commands are allowed over SSH
  • Built-in templates - Pre-configured rulesets for common workflows
  • Violation monitoring - Real-time logging of blocked requests (-m)
  • Cross-platform - macOS (sandbox-exec) + Linux (bubblewrap)

Fence can be used as a Go package or CLI tool.

Documentation

Attribution

Inspired by Anthropic's sandbox-runtime.

Fuente: GitHub