Le référentiel qui exécute le code : une histoire sur la configuration MCP dans OpenCode

DEV - 21/01
Comment j'ai découvert que cloner un référentiel et exécuter un outil de développement pouvait compromettre l'ensemble de votre...

Comment j'ai découvert que cloner un référentiel et exécuter un outil de développement pouvait compromettre l'intégralité de votre machine, et pourquoi je vous en parle.

TL;DR : NE PAS COURIRCode Ouvertdans un dossier auquel vous n'avez pas confiance, et je le pense

Tout a commencé par une question simple : que se passe-t-il lorsque OpenCode charge la configuration d'un référentiel ?

j'exploraisCode Ouvert, un assistant de codage basé sur l'IA qui gagne en popularité parmi les développeurs. Comme de nombreux outils modernes, il prend en charge MCP (Model Context Protocol), qui vous permet d'étendre ses capacités avec des serveurs externes. Des trucs utiles.

Mais ensuite j'ai remarqué quelque chose dans le schéma de configuration. Les serveurs MCP « locaux » peuvent spécifier uncommandetableau. Et cette commande... s'exécute simplement.

Aucune invite. Aucune confirmation. Juste une exécution.

La découverte

Laissez-moi vous expliquer ce que j'ai trouvé.

Quand tu courscode ouvertdans un répertoire, il charge automatiquement la configuration depuisopencode.jsons'il en existe un. C'est pratique ; les projets peuvent expédier leurs paramètres préférés. Mais parmi ces paramètres se trouve la possibilité de définir des serveurs MCP, y compris ceux « locaux » qui génèrent des processus sur votre machine.

Voici le chemin du code que j'ai tracé :

// packages/opencode/src/mcp/index.ts:411 (version 1.1.25) const [cmd, ...args] = mcp.command const transport = new StdioClientTransport({ command: cmd, // Cela vient directement du fichier de conf...
[Courte citation de 8% de l'article original]
Loading...