D-OPEN

Remplacer un sandbox Terrarium vulnerable par E2B ou Daytona en production — les 7 etapes que j aurais aime connaitre avant de perdre 3 jours

Remplacer sandbox Python Terrarium par E2B ou Daytona
Anna Kowalski

Anna Kowalski

Ingenieure platform Python et Kubernetes · 23 avril 2026 · 13 min de lecture

TL;DR

  • • Guide en 7 etapes pour migrer un sandbox Python vulnerable (Terrarium CVE-2026-5752) vers E2B managed ou Daytona self-hosted.
  • • Couvre audit, choix technique, installation SDK, restriction reseau, observabilite, bascule progressive, kill switch Terrarium.
  • • Budget realiste : 300 a 800 euros par mois pour E2B, 150 a 300 euros pour Daytona self-hosted sur Scaleway.
  • • Temps de migration : 3 a 5 jours pour E2B, 7 a 12 jours pour Daytona complet.

La CVE-2026-5752 sur Cohere Terrarium publiee le 22 avril 2026 nous a force a migrer en urgence deux stacks clients en moins de 72 heures. Voici la checklist operationnelle qui a servi a sortir de Terrarium proprement, avec retours d experience sur les pieges rencontres.

COMPARATIF SANDBOX PYTHON LLM - AVRIL 2026SolutionIsolationConformite FRDelai de mise en prodTerrariumCASSENON MAINTENUCVE-2026-5752E2BFirecracker VMSOC 2 + DPA EU3-5 joursDaytona self-hostedKata gVisorSouverain France7-12 joursModalgVisorUS region only2-4 jours

Etape 1 : auditer l exposition Terrarium sur vos depots et votre runtime

Lancer la recherche sur l ensemble des depots Git et images Docker internes :

# Dans chaque repo
grep -rE "terrarium|pyodide-sandbox|cohere-terrarium" .

# Sur les images Docker
docker image ls | grep -E "terrarium|cohere"

# Dans les lockfiles
cat package-lock.json | grep terrarium
cat poetry.lock | grep terrarium

Lister aussi toutes les dependances transitive via npm ls ou pip show sur vos frameworks agentic (CrewAI, LangChain, LlamaIndex, AutoGen). Certains forks ou templates anciens embarquent Terrarium silencieusement.

Etape 2 : choisir E2B managed ou Daytona self-hosted selon la conformite

La decision se joue sur trois criteres. Conformite reglementaire, delai de mise en prod, cout 24 mois. Pour une PME SaaS sans contrainte souverainete forte, E2B region EU est le choix pragmatique. Pour un acteur regule secteur bancaire, sante, OIV ou OSE NIS2, Daytona self-hosted sur Scaleway Ile-de-France ou OVHcloud Roubaix est recommande.

Notre matrice de decision pragmatique : si votre client signe rapidement et exige un DPO-compliant DPA, prenez E2B. Si votre client demande un audit ANSSI ou une visite de site physique datacenter, allez sur Daytona. Les methodologies d audit chez WebGuard Agency donnent les bons referentiels.

Etape 3 : creer un compte E2B ou deployer Daytona sur Kubernetes souverain

Pour E2B : creer un workspace sur e2b.dev, generer une cle API, specifier la region eu-frankfurt dans les options client. Activer le DPA dans l interface billing.

Pour Daytona : provisionner un cluster Kubernetes dedie (K3s suffit pour une startup, GKE ou Scaleway Kapsule pour une PME). Installer Daytona via Helm :

helm repo add daytona https://charts.daytona.io
helm install daytona daytona/daytona \
  --namespace daytona --create-namespace \
  --set runtime.kata.enabled=true \
  --set network.egressPolicy=restrictive

Verifier que Kata Containers ou gVisor est actif sur les workers pour l isolation kernel-level. Sans Kata, vous avez un conteneur Docker classique, ce qui ne protege PAS contre un escape root.

Etape 4 : remplacer la couche API Terrarium par le SDK E2B ou Daytona

Exemple de code avant / apres pour un agent Python :

# Avant (Terrarium, vulnerable)
from terrarium import execute
result = execute(user_code, timeout=30)

# Apres (E2B)
from e2b_code_interpreter import Sandbox
sandbox = Sandbox(template="python-3.12", region="eu-frankfurt")
execution = sandbox.run_code(user_code, timeout=30)
result = execution.text
sandbox.kill()

Pour Daytona, le SDK Python s installe via pip install daytona-sdk, et l usage est equivalent en abstraction. Piege a eviter : l ancien code Terrarium ne detruit souvent pas le conteneur apres usage, ce qui coute cher en E2B. Systematiser l appel sandbox.kill() ou utiliser un with Sandbox(...) as s: pattern.

Mission d accompagnement migration sandbox

Notre equipe pilote votre migration Terrarium vers E2B ou Daytona sur 10 jours ouvres : code review, tests securite, observabilite, rollout progressif.

Planifier la migration

Etape 5 : restreindre le reseau sortant du sandbox par allow list

Par defaut, un sandbox peut atteindre toute adresse IP publique. C est un vecteur d exfiltration majeur : un LLM genere un script qui poste vos secrets sur un endpoint attacker-controlled.

Sur E2B, configurer l option network_policy avec une liste blanche explicite des domaines autorises. Sur Daytona, appliquer une NetworkPolicy Kubernetes :

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: sandbox-egress
  namespace: daytona-workloads
spec:
  podSelector:
    matchLabels:
      app: sandbox
  policyTypes: [Egress]
  egress:
  - to:
    - ipBlock: { cidr: 10.0.0.0/8 }  # Interne seulement
    ports: [ { protocol: TCP, port: 443 } ]

Etape 6 : instrumenter l observabilite et les quotas anti-abus

Trois metriques critiques a tracker. Un : nombre d executions par utilisateur par heure (detection abuse). Deux : duree moyenne d execution (anomalies : un script qui tourne 30 minutes au lieu de 3 secondes est suspect). Trois : codes de sortie anormaux (segfault, OOM, timeout).

Brancher un Prometheus + Grafana sur Daytona, ou utiliser le dashboard E2B Cloud. Ajouter des alertes CrowdSec ou Wazuh sur les patterns prototype chain bypass et syscall unusual. Pour les equipes qui veulent une observabilite complete LLM, nos guides OpenTelemetry sont complementaires.

Etape 7 : basculer progressivement le trafic et tuer Terrarium

Pratiquer un rollout canari : router d abord 5 pourcent du trafic vers la nouvelle stack, puis 25, puis 50, puis 100. Surveiller les metriques d erreur, la latence, le cout.

Apres 48 heures de stabilite a 100 pourcent, supprimer l ancienne image Terrarium de votre registry, revoquer ses credentials reseau, et archiver le code legacy dans un repo separe avec une annotation deprecated. Mettre une alerte CI qui bloque tout import Terrarium a l avenir, via un linter custom ou un check pre-commit.

Les 3 erreurs que nous avons faites sur la premiere migration

Erreur 1 : avoir migre en prod directement sans rollout canari sur un client avec seulement 80 utilisateurs actifs. Resultat : 40 minutes de blank page car un edge case E2B ne tolerait pas les outputs binaires (matplotlib figures).

Erreur 2 : avoir sous-dimensionne le timeout E2B a 10 secondes. Plusieurs scripts data analysis legitimes tournaient en 15-20 secondes. Retour utilisateur negatif, quick fix timeout a 30 secondes.

Erreur 3 : avoir oublie d activer le rate limit par utilisateur. Un compte malveillant a lance 2000 executions en 10 minutes. Cout inattendu 35 USD et petite frayeur.

Audit de securite post-migration sandbox

Apres migration, nous validons la robustesse de votre nouveau sandbox : pentest cible, tests d evasion, revue policy reseau, checklist RGPD.

Commander l audit post-migration

FAQ : remplacer Terrarium par E2B ou Daytona en 2026

Quel est le cout typique d une migration Terrarium vers E2B en France ?

Pour un SaaS PME avec environ 10 000 executions par jour, le cout E2B est de l ordre de 300 a 800 euros par mois, plus 3 a 5 jours d ingenierie pour la migration. Pour Daytona self-hosted sur OVHcloud ou Scaleway, comptez 150 a 300 euros par mois en infrastructure et 7 a 12 jours d ingenierie pour le deploiement Kubernetes complet.

E2B est-il conforme RGPD pour une PME francaise ?

E2B dispose d une region europeenne (Francfort) et a publie un DPA (Data Processing Agreement) en fevrier 2026. Les entreprises avec contraintes RGPD nominales peuvent utiliser E2B region EU. Les entreprises avec contraintes strictes souverainete France (OIV, sante, banque sensible) doivent privilegier Daytona self-hosted sur infrastructure souveraine.

Comment limiter le risque d exfiltration de donnees depuis le sandbox ?

Trois controles obligatoires. Un, allow list des domaines sortants (HTTPS uniquement vers des endpoints autorises). Deux, limite de memoire et de CPU par conteneur. Trois, duree maximale d execution et destruction automatique du conteneur apres timeout. E2B expose ces controles via son API, Daytona via NetworkPolicy Kubernetes.

Peut-on continuer a utiliser Pyodide directement sans E2B ?

Pyodide dans un browser est considere comme sur car le sandbox est le sandbox du browser. Pyodide execute server-side avec des runtime wrappers comme Terrarium herite de la vulnerabilite. Si vous voulez Pyodide server-side, executez le dans un conteneur isole Firecracker gvisor, pas dans un runtime Node partage. C est exactement ce qu offre E2B.