- Fornece um ambiente seguro de microVM Linux para executar código não confiável com segurança
- Durante a execução do código, protege chaves secretas e controla o acesso à rede, bloqueando o risco de vazamento de dados em código gerado por LLMs ou fornecido por usuários
- Com o comando sandbox.deploy(), é possível implantar diretamente no Deno Deploy a partir do ambiente de desenvolvimento, sem necessidade de build ou autenticação separada
- Com volumes e snapshots, é possível recriar rapidamente caches, bancos de dados e ambientes de desenvolvimento
- Adequado para ambientes de execução de código que exigem segurança, como agentes de IA, sistemas de plugins e runners de CI
Visão geral do Deno Sandbox
- O Deno Sandbox oferece a capacidade de executar código não confiável em uma microVM Linux leve na nuvem do Deno Deploy
- Pode ser criado via SDK de JavaScript ou Python, com tempo de inicialização de menos de 1 segundo
- É possível interagir diretamente via SSH, HTTP e VS Code
- O objetivo é resolver problemas de segurança quando código gerado por LLM ou fornecido por usuários faz chamadas externas incluindo chaves de API
- O código executado dentro do sandbox é protegido por uma arquitetura de isolamento de sistema e defesa em profundidade (defense-in-depth)
Secrets That Can’t Be Stolen
- No ambiente sandbox, as chaves secretas não são expostas como variáveis de ambiente reais
- Dentro do código, só é possível acessar strings placeholder
- A chave real só é injetada em requisições de saída para hosts autorizados
- Por exemplo,
OPENAI_API_KEY só é ativada ao fazer requisições para api.openai.com; se houver tentativa de vazamento para outro domínio, ela é invalidada
- Isso permite bloquear tentativas de roubo de chaves por prompt injection ou código malicioso
Controle de saída de rede
- O sandbox bloqueia requisições de rede fora da lista de hosts permitidos (allowNet)
- Ex.:
["api.openai.com", "*.anthropic.com"]
- Todo o tráfego de rede é bloqueado no limite da VM, e as políticas são aplicadas por meio de um proxy de saída semelhante ao
coder/httpjail
- No futuro, estão previstos análise de conexões de saída e hooks programáveis para inspecionar e modificar requisições
- Quando combinado com a flag
--allow-net do Deno, é possível formar uma camada dupla de segurança de rede
Do sandbox para produção
- Com o comando
sandbox.deploy(), é possível implantar diretamente do sandbox para o Deno Deploy
- Sem processo separado de CI, build ou autenticação, o ambiente de desenvolvimento pode ser convertido imediatamente em produção serverless
- No código de exemplo,
my-app é implantado com a opção production: true e depois a URL é exibida
- Isso permite realizar uma implantação serverless com escalabilidade automática em uma única chamada
Persistência
- Por padrão, o sandbox é efêmero (ephemeral), mas quando é necessário armazenar estado, os seguintes recursos estão disponíveis
- Volumes: armazenamento de leitura e escrita para cache, banco de dados e dados de usuários
- Snapshots: imagens somente leitura que incluem toolchains ou volumes base
- Se você criar um snapshot após
apt-get install, todos os sandboxes seguintes poderão inicializar imediatamente com o ambiente pré-instalado
- Também é possível criar um novo ambiente de desenvolvimento em poucos segundos com volumes baseados em snapshot
Detalhes técnicos
- Regiões: Amsterdam, Chicago
- vCPU: 2
- Memória: 768MB ~ 4GB
- Duração: temporária (ephemeral) ou baseada em timeout, com possibilidade de extensão quando necessário
- Duração máxima: 30 minutos
- Tempo de inicialização: menos de 1 segundo
- Casos de uso adequados: execução de código de agentes de IA, sistemas de plugins seguros, runners temporários de CI, ambientes para execução de código fornecido por usuários
Preços
- Incluído no plano do Deno Deploy, com cobrança baseada em uso
- Tempo de CPU: $0.05/h (40 horas incluídas no plano Pro)
- Memória: $0.016/GB-h (1000 GB-h incluídos no plano Pro)
- Armazenamento de volumes: $0.20/GiB-month (5 GiB incluídos no plano Pro)
- O plano Enterprise pode ser consultado separadamente
Primeiros passos
- O Deno Sandbox foi lançado em beta, junto com a disponibilidade geral (GA) do Deno Deploy
- Principais recursos
- A equipe do Deno está ansiosa para ver que tipos de projetos usuários e agentes de IA vão construir com o Deno Sandbox
1 comentários
Comentários do Hacker News
É interessante que você nem precisa usar Deno ou JavaScript
Com o SDK para Python, deno-sandbox, dá para criar sandboxes, executar comandos, fazer leitura e escrita de arquivos etc.
Foi confirmado que o protocolo da API funciona com base em WebSocket
A forma como o Deno Sandbox lida com secrets é impressionante
Dentro do código, aparecem apenas placeholders em vez das chaves reais, e a chave verdadeira só é injetada quando a requisição sai para um host autorizado
Mesmo que um código malicioso tente vazar esse placeholder para fora, ele não serve para nada
Se o proxy também substituísse a chave no sentido da resposta, isso ficaria mais difícil, mas ainda assim não parece uma defesa perfeita
Uma injeção de secrets via proxy com entendimento de contexto talvez fosse mais segura
A aplicação não manipula a chave diretamente, e o proxy adiciona a API key no lugar dela, reduzindo o risco de exposição de segurança
Secrets that can’t be stolen
O código malicioso não consegue roubar permanentemente o secret, mas ainda pode usar essa chave para enviar requisições maliciosas
É parecido com o fato de um XSS não conseguir ler um cookie httpOnly, mas ainda conseguir fazer requisições com esse cookie
Nesse caso, recursos como certificate pinning podem ficar inviáveis
Também queria perguntar se pretendem adicionar algo como um Vault
Segundo a equipe da Deno, recentemente aumentou o número de serviços em formato de plataforma que executam diretamente código gerado por LLM
Para esse código chamar APIs externas, ele precisa de credenciais reais e acesso à rede
Só fazer sandboxing não basta; é preciso combinar controle de rede e proteção de secrets
O Deno Sandbox oferece as duas coisas, e quando o código estiver pronto ele pode ser implantado diretamente no Deno Deploy
Nossa equipe também construiu internamente um ambiente de sandbox parecido com Firecracker + Go
Por causa de questões de soberania de dados, precisamos operar apenas dentro da UE, então ele pode ser implantado em qualquer lugar com virtualização por hardware
Para que o LLM não lide diretamente com credenciais, geramos na hora uma CLI com escopo limitado e a fornecemos
O LLM simplesmente a chama como se fosse um comando bash
Como os modelos mais recentes são treinados como assistentes de programação, essa abordagem é bem mais natural e eficiente
O método de substituição de secrets é interessante, mas parece que pode falhar em casos onde há transformação de chave, como OAuth 1, JWT, HMAC
Além disso, se a chave fizer parte do payload, a substituição pode causar problemas HTTP como incompatibilidade de Content-Length
E esse tipo de abordagem também não ajuda contra outros ataques, como SQL injection
No fim, isso parece mais uma mitigação parcial do que uma defesa completa
Existe um plano gratuito, então dá vontade de testar como algo no estilo do Glitch, mas já tive muitas experiências com serviços grátis sendo encerrados no meio do caminho, então fico cauteloso
O design com placeholders para secrets parece uma boa escolha
Mas hoje em dia há produtos de sandbox demais — Modal, Daytona, Fly, Cloudflare, Deno etc.
Fico curioso sobre o que as pessoas realmente usam em produção
Dizem que a microVM Linux leve oferecida pelo Deno Sandbox roda na nuvem do Deno Deploy,
e a grande dúvida é se isso também pode rodar em um ambiente Linux self-hosted
Se abrirem tudo como open source, AWS ou GCP simplesmente copiam
No fim, é como construir um castelo dentro da sandbox de outra pessoa, mas realisticamente esse parece ser o único modelo de receita viável
Se alguém usar o Claude Pro ou o plano Max nesse tipo de ambiente, fico preocupado que, como cada acesso viria de um IP diferente, a Anthropic possa interpretar isso como múltiplos usuários e bloquear
Também queria entender por que a sessão é limitada a 30 minutos
A Anthropic parece usar heurísticas para decidir apenas se há uma pessoa usando diretamente