Execução em Sandbox
Execute tudo o que um agente gera ou invoca dentro de um ambiente isolado e descartável, sem credenciais ambientais, com sistema de arquivos limitado, saída controlada e limites rígidos de recursos. O sandbox não existe porque o agente seja malicioso, mas porque a entrada dele pode ser.
Definição
Execução em sandbox é a prática de rodar o código gerado pelo agente e as ações que ele invoca dentro de um ambiente isolado e efêmero cujo sistema de arquivos, rede, credenciais e recursos são limitados pelo host e não pelo agente, de modo que um agente sequestrado ou equivocado não afete nada fora dele.
Problema
Um agente que executa código no host herda o host: suas credenciais, seu sistema de arquivos, sua posição de rede. Uma injeção bem-sucedida ou um comando confiantemente errado passam a ser indistinguíveis de um comprometimento da máquina.
Quando usar
Use sempre que um agente executar código, rodar comandos de shell, instalar pacotes ou processar arquivos não confiáveis. O limiar é baixo: se o agente pode provocar execução, a execução vai para um sandbox.
Solução
Torne-o efêmero. Crie o ambiente por tarefa, destrua ao final e não carregue estado que a próxima tarefa não pediu. A persistência é como um comprometimento pontual vira ponto de apoio.
Remova as credenciais ambientais. Nada no ambiente deveria ser utilizável só por estar presente; injete apenas os segredos restritos de que a tarefa precisa, pelo tempo dela.
Limite o sistema de arquivos ao conjunto de trabalho. Monte o repositório ou a entrada e nada mais, e monte como somente leitura tudo o que não precisa de escrita.
Restrinja a saída dentro do sandbox, não em volta dele. Do ponto de vista do atacante, o isolamento e a política de rede são o mesmo controle, e um sandbox com rede aberta é uma cela com telefone.
Limite recursos: CPU, memória, disco, tempo de relógio, número de processos. O consumo descontrolado é o modo de falha que chega primeiro e com mais frequência, normalmente sem adversário algum.
Registre o que cruzou a fronteira: quais arquivos entraram, quais saíram, quais destinos foram alcançados. A fronteira só é útil se você puder ver o que passou por ela.
Componentes
Benefícios
- Converte «o agente executou algo ruim» de incidente em contêiner descartado.
- Torna seguro dar a um agente capacidade real de execução, que costuma ser justamente o que o torna útil.
- Limita erros honestos tanto quanto ataques: o mesmo controle pega um laço infinito e um payload injetado.
- Dá um bom lugar para observar: tudo o que a tarefa tocou cruzou uma única fronteira.
Riscos
- Isolamento mais fraco do que o suposto: um kernel compartilhado não é fronteira de segurança contra um escape determinado, e tratar um contêiner como microVM é um erro de categoria.
- Credenciais contrabandeadas por conveniência: um único arquivo de configuração montado desfaz o padrão inteiro.
- Sandboxes que ficam persistentes em silêncio porque reconstruir é lento, e com isso some a efemeridade que sustentava a garantia.
- Escape pela superfície compartilhada que resta: volumes montados, a API do orquestrador ou a rede que o sandbox ainda alcança.
Quando não usar
- Agentes somente leitura sem capacidade de execução, onde não há o que isolar e o custo não compra nada.
- Caminhos em linha críticos em latência onde a inicialização do ambiente domina a tarefa e um controle mais estreito cabe melhor: um interpretador restrito, uma função pura.
- Quando o sandbox precisaria justamente das credenciais que ele existe para reter, o que é sinal de que a tarefa deve ser dividida em vez de isolada.
Tecnologias
Exemplos
- Um agente de programação que clona em um contêiner novo por tarefa, com o repositório montado, sem credenciais de nuvem presentes e com saída limitada ao registry de pacotes. Uma instalação de dependência maliciosa destrói um contêiner e nada mais.
- Um agente de análise de dados que executa Python gerado em uma microVM com o dataset montado somente leitura, sem rede alguma e com limite de tempo de relógio. O código gerado pode estar errado; não pode sair caro nem exfiltrar.
- Um agente de processamento de documentos que abre PDFs não confiáveis dentro de um ambiente descartável, porque um exploit de parser em um arquivo enviado é um caminho real até o host e o arquivo veio de fora.
KPIs
- Percentual de execuções em sandbox
- O número de cobertura. O que roda fora do sandbox é a postura de segurança real, independentemente do que a parte de dentro faça.
- Tempo de vida do sandbox
- Quanto duram os ambientes. Vidas crescentes significam que a efemeridade está erodindo para persistência.
- Batidas em limites de recursos
- Tarefas interrompidas por cota ou timeout. Uma mistura útil de gerações descontroladas e limites legítimos apertados demais.
- Segredos presentes em execução
- Número de credenciais alcançáveis dentro do ambiente. O alvo é o mínimo de que a tarefa precisa, e muitas vezes zero.
Modos de falha observados
- A montagem por conveniência: um diretório home, um arquivo de credenciais ou um socket montados para que uma tarefa parasse de falhar.
- Reutilização persistente: o ambiente deixa de ser por tarefa porque reconstruir custa demais, então estado e comprometimento sobrevivem.
- Saída aberta dentro da fronteira: isolamento forte com rede livre é contenção apenas contra o sistema de arquivos.
- Alcance ao orquestrador: o sandbox consegue chamar a API que gerencia sandboxes, o que é escapar por design e não por exploit.
Lições aprendidas
- Isole a execução antes de confiar na geração. O sandbox é o que torna razoável deixar um agente rodar código.
- O efêmero é a propriedade de segurança; o isolamento sozinho apenas adia o problema.
- A credencial que não está presente não pode ser roubada — e é o único controle que resiste depois de um escape.
- A maioria das ativações do sandbox são erros honestos, não ataques. Isso é o padrão funcionando, não prova de que era desnecessário.
FAQs
- Um contêiner basta ou preciso de microVM?
- Depende do que roda dentro. Para código próprio com risco de injeção, um contêiner endurecido sem credenciais e com saída limitada costuma ser proporcional. Para código arbitrário de origem não confiável, assuma que o kernel compartilhado pode ser escapado e use uma microVM.
- Em que difere de ferramentas com privilégio mínimo?
- O privilégio mínimo limita o que o agente pode pedir; o sandbox limita o que acontece quando algo executa mesmo assim. Um governa a requisição, o outro o ambiente em que ela roda, e agentes que executam código precisam dos dois.
- O sandbox deixa tudo mais lento. Compensa?
- Compare com o custo da alternativa, não com zero. Quase toda a latência é a inicialização do ambiente, que pools e imagens pré-aquecidas removem em boa parte; a falha que ele evita é um comprometimento do host que roda o agente.