Présentation de Deno Sandbox
(deno.com)- Fournit un environnement microVM Linux sécurisé pour exécuter du code non fiable en toute sécurité
- Pendant l’exécution du code, la protection des clés secrètes et le contrôle de l’accès réseau permettent de bloquer les risques d’exfiltration de données liés au code généré par des LLM ou au code utilisateur
- La commande
sandbox.deploy()permet un déploiement direct vers Deno Deploy depuis l’environnement de développement, sans build ni processus d’authentification séparés - Les volumes et snapshots permettent de recréer rapidement des caches, bases de données et environnements de développement
- Adapté aux environnements d’exécution de code nécessitant de la sécurité comme les agents IA, systèmes de plugins ou runners CI
Présentation de Deno Sandbox
- Deno Sandbox permet d’exécuter du code non fiable dans des microVM Linux légères sur le cloud Deno Deploy
- Création possible via les SDK JavaScript ou Python, avec un temps de démarrage inférieur à 1 seconde
- Interaction directe possible via SSH, HTTP ou VS Code
- L’objectif est de résoudre les problèmes de sécurité liés aux appels externes incluant des clés API effectués par du code généré par un LLM ou fourni par l’utilisateur
- Le code exécuté dans le sandbox est protégé par une architecture de l’isolation système et défense en profondeur (Defense-in-depth)
Des secrets impossibles à voler
- Dans l’environnement sandbox, les clés secrètes ne sont pas exposées comme de vraies variables d’environnement
- À l’intérieur du code, seules des chaînes de caractères de substitution sont accessibles
- La vraie clé n’est injectée que pour les requêtes sortantes vers des hôtes approuvés
- Par exemple,
OPENAI_API_KEYn’est activée que pour les requêtes versapi.openai.com, et devient inutilisable si elle est exfiltrée vers un autre domaine - Cela permet de bloquer les tentatives de vol de clés via prompt injection ou code malveillant
Contrôle du trafic réseau sortant
- Le sandbox bloque les requêtes réseau en dehors de la liste des hôtes autorisés (
allowNet)- Exemple :
["api.openai.com", "*.anthropic.com"]
- Exemple :
- Tout le trafic réseau est bloqué à la frontière de la VM, avec application des politiques via un proxy sortant similaire à
coder/httpjail - Sont prévus à l’avenir : analyse des connexions sortantes et hooks programmables pour inspecter ou modifier les requêtes
- Combiné avec le flag
--allow-netde Deno, il est possible de mettre en place une double couche de sécurité réseau
Du sandbox à la production
- La commande
sandbox.deploy()permet un déploiement direct de Deno Deploy depuis le sandbox- Sans build CI séparé ni processus d’authentification, l’environnement de développement peut être transformé immédiatement en production serverless
- Dans l’exemple de code,
my-appest déployé avec l’optionproduction: true, puis l’URL est affichée
- Cela permet d’effectuer un déploiement serverless auto-scalable en un seul appel
Persistance
- Par défaut, le sandbox est éphémère (ephemeral), mais les fonctions suivantes sont proposées lorsqu’un stockage d’état est nécessaire
- Volumes : stockage en lecture/écriture pour les caches, bases de données et données utilisateur
- Snapshots : images en lecture seule incluant une toolchain ou des volumes de base
- Si un snapshot est créé après
apt-get install, tous les sandboxes suivants peuvent démarrer immédiatement avec un environnement préinstallé - Des volumes basés sur des snapshots permettent de créer un nouvel environnement de développement en quelques secondes
Détails techniques
- Régions : Amsterdam, Chicago
- vCPU : 2
- Mémoire : 768MB à 4GB
- Durée de vie : éphémère (ephemeral) ou basée sur un timeout, prolongeable si nécessaire
- Durée de vie maximale : 30 minutes
- Temps de démarrage : moins d’1 seconde
- Cas d’usage adaptés : exécution de code d’agents IA, systèmes de plugins sécurisés, runners CI temporaires, environnements d’exécution de code fourni par l’utilisateur
Tarification
- Inclus dans la grille tarifaire Deno Deploy avec facturation à l’usage
- Temps CPU : $0.05/h (40 heures incluses dans l’offre Pro)
- Mémoire : $0.016/GB-h (1000 GB-h inclus dans l’offre Pro)
- Stockage des volumes : $0.20/GiB-month (5 GiB inclus dans l’offre Pro)
- L’offre Enterprise est disponible sur demande
Pour commencer
- Deno Sandbox est lancé en bêta et proposé avec la disponibilité générale (GA) de Deno Deploy
- Principales ressources
- Page de présentation : deno.com/sandbox
- Documentation : docs.deno.com/sandbox
- SDK JavaScript : jsr.io/@deno/sandbox ou npm
- SDK Python : pypi.org/project/deno-sandbox
- L’équipe Deno dit attendre avec impatience de voir quels projets les utilisateurs et les agents IA construiront avec Deno Sandbox
1 commentaires
Réactions sur Hacker News
Il est intéressant de constater qu’il n’est pas du tout nécessaire d’utiliser Deno ni même JavaScript
Via le SDK Python deno-sandbox, on peut créer un sandbox, exécuter des commandes, faire des entrées/sorties de fichiers, etc.
J’ai vérifié que le protocole API fonctionne sur WebSocket
La manière dont Deno Sandbox gère les secrets est impressionnante
Dans le code, on ne voit que des placeholders au lieu des vraies clés, et la véritable clé n’est injectée qu’au moment des requêtes vers des hôtes autorisés
Même si un code malveillant tente d’exfiltrer ce placeholder, il ne sert à rien
Si le proxy remplace de nouveau la clé dans le sens de la réponse, ce serait plus difficile, mais cela ne semblerait toujours pas être une défense parfaite
Une injection de secrets via proxy consciente du contexte serait peut-être plus sûre
L’application ne manipule pas directement la clé, et le proxy ajoute lui-même la clé API, ce qui réduit le risque d’exposition côté sécurité
Secrets that can’t be stolen
Un code malveillant ne peut pas voler durablement les secrets, mais peut toujours envoyer des requêtes malveillantes en utilisant cette clé
C’est un concept comparable à une XSS qui ne peut pas lire un cookie httpOnly, mais peut quand même envoyer des requêtes avec ce cookie
Dans ce cas, des fonctionnalités comme le certificate pinning pourraient être difficiles à mettre en œuvre
J’aimerais aussi savoir s’ils prévoient d’ajouter quelque chose de type Vault
L’équipe Deno explique que les services de type plateforme qui exécutent directement du code généré par des LLM se multiplient récemment
Pour que ce code appelle des API externes, il lui faut de vraies informations d’authentification et un accès réseau
Un simple sandboxing ne suffit pas ; il faut aussi contrôler le réseau et protéger les secrets
Deno Sandbox fournit les deux, et une fois le code prêt, il peut être déployé directement sur Deno Deploy
Notre équipe a aussi construit elle-même un environnement sandbox similaire avec Firecracker + Go
À cause des exigences de souveraineté des données, nous devons opérer uniquement dans l’UE, donc cela peut être déployé partout où la virtualisation matérielle est disponible
Pour éviter que le LLM ne manipule directement les identifiants, nous générons à la volée un CLI à périmètre restreint que nous lui fournissons
Le LLM se contente alors de l’appeler comme une commande bash
Les modèles récents étant entraînés comme assistants de codage, cette approche est bien plus naturelle et efficace
La méthode de substitution des secrets est intéressante, mais j’ai l’impression qu’elle risque de casser dans des cas où une transformation de clé est nécessaire, comme avec OAuth 1, JWT ou HMAC
De plus, si la clé fait partie du payload, la substitution peut provoquer des problèmes HTTP comme un désalignement de
Content-LengthEt ce genre d’approche est de toute façon impuissant face à d’autres attaques comme l’injection SQL
Au final, cela ressemble davantage à une mesure d’atténuation partielle qu’à une défense complète
Il existe une offre gratuite, ce qui donne envie de l’essayer comme Glitch pour faire des expérimentations, mais j’ai souvent vu ce genre de services gratuits être arrêtés en cours de route, donc je reste prudent
Le design avec des placeholders pour les secrets semble être un bon choix
Mais en ce moment, il y a vraiment trop de produits sandbox — Modal, Daytona, Fly, Cloudflare, Deno, etc.
Je me demande ce qui est réellement utilisé en production
Deno Sandbox indique fournir une microVM Linux légère qui tourne dans le cloud Deno Deploy,
mais la vraie question est de savoir si cela peut aussi tourner dans un environnement Linux auto-hébergé
S’ils publiaient tout en open source, AWS ou GCP le recopieraient
Au fond, on a l’impression de bâtir un château dans le sandbox de quelqu’un d’autre, mais en pratique c’est souvent le seul modèle économique viable
Si on utilise Claude Pro ou le plan Max dans un tel environnement, je crains qu’Anthropic ne bloque l’accès en croyant à tort à un usage par plusieurs utilisateurs, puisque la connexion se ferait chaque fois depuis une IP différente
Je me demande aussi pourquoi la session est limitée à 30 minutes
Anthropic semble simplement utiliser des heuristiques pour déterminer si « c’est bien un humain qui l’utilise directement »