T03 · Remote Payload Retrieval and Execution
- Location
README.md:89- Finding
Recommended installation command executes mutable remote code
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill does what it claims, but its install path and privacy wording need careful review before use.
Install only from a reviewed pinned commit or release, not the floating npx github command. Treat your DeepSeek API key as sensitive, expect it and your search queries to be sent to DeepSeek over HTTPS, and prefer a limited-use key with billing limits. Use the single-harness install flags if you do not want the skill copied into every supported agent directory.
README.md:89Recommended installation command executes mutable remote code
README.md:55Documentation falsely claims that the API key never leaves the machine
Referenced artifact was not completely inspected
Run the bundled script from this skill's directory (where this `SKILL.md` lives):
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
The README instructs users to run npx github:mingzeng21/deepseek-web-search without pinning to a specific tag or commit. That causes code to be fetched and executed from a moving GitHub target, so if the repository is later compromised or changed maliciously, users could execute attacker-controlled code during install.
The npx github:... --claude example still executes code from an unpinned GitHub repository. Although the intent is convenience, the installation path exposes users to repository compromise, tag movement, or maintainer account takeover leading to arbitrary code execution on the local machine.
This is another unpinned npx github: install variant, changing only the target harness flag. The underlying issue remains remote execution of mutable GitHub-hosted code, which is a classic software supply-chain risk.
The --skip-key example preserves the same unpinned remote code execution risk as the other npx github: examples. In the context of a skill installer that writes into agent skill directories, compromise could lead to persistence inside multiple AI harnesses as well as local credential theft.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
> Install this skill: https://github.com/mingzeng21/deepseek-web-search.git
The assistant clones the repo and drops it into the correct skills folder for you — Claude Code reads `~/.claude/skills/`, while Codex, Gemini CLI, and Copilot CLI read `~/.agents/skills/`. Restart your harness (or run `/reload-plugins` in Claude Code) and it's live.
> **Note:** `~/.agents/skills/` is the cross-runtime alias shared by Codex, Gemini CLI, and Copilot CLI — install once, use in all three.
The README explains that queries are sent to DeepSeek's server-side web-search agent, but it markets this as a convenience feature without a clear privacy/data-handling warning. Users may input secrets, proprietary text, or regulated data without understanding that prompts and derived browsing activity are transmitted to and processed by a remote third-party service.
The README instructs users to run npx github:mingzeng21/deepseek-web-search without pinning to a specific commit, tag, or released package version. That means the fetched installer code can change over time, so anyone who can modify the upstream repo or its dependency path could cause arbitrary code execution on users' machines at install time.
This line again recommends executing a mutable GitHub-hosted package via npx github:... without version pinning. Because npx will download and run code immediately, a later repository change or compromise could transparently deliver malicious installer behavior to users.
This command variant still executes remote GitHub code through npx without an immutable version reference. The extra flag does not reduce the supply-chain risk: users remain exposed to arbitrary code changes in the source repository.
Like the other install examples, this npx github:... --skip-key form runs unpinned remote code. In a skill-installation context this is particularly sensitive because the installer writes into shared agent skill directories and may handle API-key setup, increasing the blast radius of a compromised upstream installer.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
> 安装以下 skill:https://github.com/mingzeng21/deepseek-web-search.git
助手会自动 clone 仓库并放到对应的 skills 目录——Claude Code 读取 `~/.claude/skills/`,Codex、Gemini CLI、Copilot CLI 读取 `~/.agents/skills/`。重启(Claude Code 里也可用 `/reload-plugins`)即可生效。
> **注意:** `~/.agents/skills/` 是 Codex、Gemini CLI、Copilot CLI 共用的跨运行时目录——装一次,三个工具通用。
The skill clearly requires network access and reads a secret from either config.json or the DEEPSEEK_API_KEY environment variable, but the manifest does not declare any explicit tool scope such as permissions or allowed-tools. This creates a transparency and least-privilege problem: a host or reviewer cannot reliably tell from the manifest that the skill needs outbound network access and secret handling, which can enable unintended execution in broader-trust environments.
The installer explicitly instructs users to run npx github:mingzeng21/deepseek-web-search, which fetches and executes remote repository code without pinning to a commit or immutable release. If the repository is changed, compromised, or force-pushed, users may execute attacker-controlled code during installation, which is especially risky because this script writes files into user tool directories and handles API-key setup.
The help text repeats the same unsafe installation pattern by directing users to invoke npx github:..., reinforcing execution of unpinned remote code. While this line is documentation rather than executable logic, it still materially increases supply-chain risk by encouraging an installation method that can silently pick up malicious repository changes.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
import { fileURLToPath } from 'url';
const __dirname = dirname(fileURLToPath(import.meta.url));
const API_URL = 'https://api.deepseek.com/responses';
const MODEL = 'deepseek-v4-flash';
const CONFIG_PATH = join(__dirname, 'config.json');
const DEFAULT_MAX_TOKENS = 8000;
This markdown file documents prompting for a DeepSeek API key, reading DEEPSEEK_API_KEY, and saving the key to a local config.json, but it does not include a clear user warning about protecting the credential or avoiding committing the file. For markdown files, missing warnings about behaviors affecting privacy or sensitive data handling should be flagged when omitted.
The placeholder value uses Chinese text ('在此填入你的DeepSeek_API_Key') as the only user-facing instruction in the file. This imposes a specific language on users without opt-in or any documented locale-specific justification, which matches the language policy violation criteria.
The instruction string includes a fixed language policy: '中文提问用中文回答'. This is a natural-language locale constraint embedded in the code, and there is no visible opt-in or alternative language selection mechanism.