Principe et objectifs
Drop se présente comme un environnement d’exécution isolé qui ne requiert aucun privilège d’administration. Le projet s’appuie sur les namespaces utilisateurs de Linux pour créer un espace de processus, de montage, réseau, IPC et cgroup distinct du système hôte. Cette isolation « rootless » empêche les programmes de modifier le système de fichiers ou d’interagir avec les services locaux, comme le montre l’exemple d’une tentative d’accès à ~/.ssh qui échoue. L’objectif principal est de contenir les effets d’éventuelles compromissions, notamment les attaques de type supply‑chain.
Architecture et isolation
Chaque environnement Drop possède son propre répertoire HOME, tandis que le répertoire réel de l’utilisateur reste masqué. La configuration s’effectue via un fichier TOML haut niveau, où l’on indique explicitement les fichiers, répertoires ou services réseau à exposer. Par défaut, toutes les instances partagent une configuration de base, ce qui évite la duplication de paramètres. Drop ne crée pas d’image de conteneur ; il réutilise la distribution Linux déjà installée, ce qui élimine le besoin d’un moteur Docker ou Podman et réduit la surcharge de stockage.
drop run --dangerously-skip-permissions myscript.pyLa ligne ci‑dessus illustre le mode « dangerously‑skip‑permissions », où Drop délègue la gestion des permissions au programme tout en conservant les barrières du namespace. Avant l’exécution, Drop retire toutes les capacités du namespace utilisateur, notamment celles permettant les montages bind, afin d’empêcher toute élévation de privilèges interne.
Intégration gVisor et limites
En option, Drop peut exécuter les programmes sur le noyau utilisateur gVisor. Cette couche supplémentaire intercepte les appels système avant qu’ils n’atteignent le noyau Linux réel, limitant ainsi la surface d’attaque liée aux vulnérabilités du kernel. L’impact est une réduction notable du risque d’exploitation, même si cela introduit une légère surcharge d’exécution due à la traduction des appels système. Le projet ne fournit pas de métriques de performance, ce qui rend difficile l’évaluation précise du compromis entre sécurité et latence.
Cas d’usage et comparaison
Drop cible les développeurs qui souhaitent tester des agents de code ou installer des paquets depuis PyPI, npm ou d’autres sources sans exposer leurs identifiants ou leurs données personnelles. Contrairement à des solutions comme Docker, qui nécessitent la construction d’images et la gestion de privilèges root, Drop fonctionne immédiatement dans l’environnement existant. Cependant, l’absence de mécanismes de réseau virtuel avancés limite son usage pour des scénarios nécessitant une simulation de topologie complexe. En résumé, Drop offre une isolation rapide et légère, adaptée aux tests de sécurité et aux développements isolés, tout en restant dépendant des capacités du noyau Linux sous‑jacent.