Headline
CVE-2023-46248: fix: swap custom prompts and default prompts order by abeatrix · Pull Request #1414 · sourcegraph/cody
Cody is an artificial intelligence (AI) coding assistant. The Cody AI VSCode extension versions 0.10.0 through 0.14.0 are vulnerable to Remote Code Execution under certain conditions. An attacker in control of a malicious repository could modify the Cody configuration file .vscode/cody.json
and overwrite Cody commands. If a user with the extension installed opens this malicious repository and runs a Cody command such as /explain or /doc, this could allow arbitrary code execution on the user’s machine. The vulnerability is rated as critical severity, but with low exploitability. It requires the user to have a malicious repository loaded and execute the overwritten command in VS Code. The issue is exploitable regardless of the user blocking code execution on a repository through VS Code Workspace Trust. The issue was found during a regular 3rd party penetration test. The maintainers of Cody do not have evidence of open source repositories having malicious .vscode/cody.json
files to exploit this vulnerability. The issue is fixed in version 0.14.1 of the Cody VSCode extension. In case users can’t promptly upgrade, they should not open any untrusted repositories with the Cody extension loaded.
RE: https://sourcegraph.slack.com/archives/C052G9Y5Y8H/p1697536651010599?thread_ts=1697536557.499619&cid=C052G9Y5Y8H
fix: swap custom prompts and default prompts order
The order of adding custom prompts and default prompts to allCommands map is swapped to prioritize default prompts over custom.
This fixes an issue where custom prompts were overriding default prompts with the same name.
Loom provided by Vincent: https://www.loom.com/share/d8aea1426d4b409a86fde3eaefc76ed0?sid=2058611d-5f2d-4457-b3cf-6490ceefe08b
Test plan
- Create a custom command and name it explain
- Before: you will be running the custom command when trying to run /explain
- After: the new custom command will not override the built-in /explain command
Before
After