- Une vulnérabilité critique d’exécution de code à distance permettant d’exécuter du code arbitraire sans authentification a été découverte dans les anciennes versions d’OpenCode
- Les versions antérieures à la v1.1.10 lancent automatiquement un serveur HTTP qui permet, sans procédure d’authentification, l’exécution de commandes arbitraires, la lecture de fichiers et la création de sessions de terminal
- Avant la v1.0.216, le simple fait de visiter un site web pouvait suffire à exécuter du code dans l’environnement local de l’utilisateur
- Dans la dernière version (v1.1.10), le serveur est désactivé par défaut, mais il reste dépourvu d’authentification lorsqu’il est activé
- Cette vulnérabilité a été enregistrée sous le nom CVE-2026-22812, et les développeurs comme les utilisateurs doivent mettre à jour immédiatement et vérifier leur configuration
Aperçu de la vulnérabilité
- OpenCode est un assistant de codage IA open source qui, avant la v1.1.10, démarrait automatiquement un serveur HTTP (port par défaut 4096+) à l’exécution
- Le serveur expose des endpoints tels que
POST /session/:id/shell, POST /pty, GET /file/content
- En l’absence de procédure d’authentification, tout client capable de s’y connecter peut exécuter du code avec les privilèges de l’utilisateur
- Aucun indicateur visuel ne signale à l’utilisateur que le serveur est en cours d’exécution, ce qui rend son exposition difficile à détecter
- La politique CORS est codée en dur sur
*.opencode.ai, ce qui permet à des pages servies depuis opencode.ai ou un sous-domaine d’accéder à l’API du serveur
- Si ce domaine est compromis ou présente une faille XSS, tous les utilisateurs dont le serveur est actif peuvent devenir des cibles
Vecteurs d’attaque
- Avant la v1.0.216 : n’importe quel site web pouvait exécuter du code sur la machine locale d’un utilisateur exécutant OpenCode
- Avant la v1.1.10 : un processus local ou une page localhost pouvait exécuter du code sans authentification
- Dans toutes les versions lorsque le serveur est activé :
- Les processus locaux et les pages localhost peuvent exécuter du code sans authentification
- Avec le flag
--mdns, tout appareil du réseau local peut y accéder
- Aucun indicateur ne montre que le serveur tourne, si bien que l’utilisateur peut ignorer son exposition
- Le domaine opencode.ai ou ses sous-domaines peuvent exécuter du code
Exemples d’attaque (Proof of Concept)
- Attaque locale : lorsque le serveur est en cours d’exécution, un processus local peut créer une session avec la commande
curl, puis exécuter la commande id > /tmp/pwned.txt
- Attaque via navigateur (avant la v1.0.216) : une page web peut transmettre des commandes au serveur local via des requêtes
fetch, puis télécharger et exécuter un script distant
- Fonctionnement confirmé sur Firefox ; Chrome peut afficher une demande de confirmation utilisateur en raison de ses protections d’accès au réseau local
Mesures à prendre côté utilisateur
- Vérifier la version avec
opencode --version, puis mettre à jour vers la v1.1.10 ou une version ultérieure
- Vérifier dans le fichier de configuration si les options
server.port ou server.hostname sont activées
- Ne pas utiliser le flag
--mdns (liaison à 0.0.0.0, exposant le service à l’ensemble du réseau)
- Si l’utilisation du serveur est indispensable, éviter d’accéder à opencode.ai et à ses sous-domaines
- Garder à l’esprit que les processus locaux peuvent accéder au serveur sans authentification lorsqu’il est activé
Calendrier de divulgation
- 2025-11-17 : premier signalement par e-mail, aucune réponse
- 2025-12-27 : soumission d’un GitHub Security Advisory, aucune réponse
- 2025-12-29 : publication du signalement par un autre utilisateur
- 2025-12-30 : application d’une restriction CORS dans la v1.0.216
- 2026-01-09 : désactivation du serveur par défaut dans la v1.1.10
- 2026-01-11 : divulgation complète
Actions recommandées
- Limiter CORS au strict minimum de domaines nécessaires (appliqué dans la v1.0.216)
- Désactiver le serveur par défaut (appliqué dans la v1.1.10)
- Ajouter une procédure d’authentification à toutes les requêtes du serveur
- Fournir à l’utilisateur un indicateur clair lorsque le serveur est en cours d’exécution
- Documenter explicitement que l’option
--mdns effectue une liaison sur 0.0.0.0
- Appliquer TLS aux communications réseau
- Publier officiellement le GitHub Security Advisory et le CVE-2026-22812
- Renforcer la surveillance des e-mails de signalement de sécurité et des alertes GHSA
- Clarifier la relation de confiance entre les mainteneurs d’OpenCode, opencode.ai et les utilisateurs
Références
- CVE : CVE-2026-22812
- Package concerné : npm
opencode-ai
- Dernières informations et contact : cy.md
Aucun commentaire pour le moment.