Back to skill

Security audit

deshell - the web & search in markdown

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it claims, but it installs an unpinned external CLI that handles an API key and sends browsing/search data through a third-party proxy.

Install only if you trust the DeShell npm package and proxy provider. Pin or verify the npm package where possible, keep the API key scoped and revocable, and do not use this skill for confidential search terms, internal-only URLs, personal data, or sensitive custom headers unless you have explicitly approved sending that data to the proxy.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:9
Finding
Unpinned and Unauditable Executable npm Dependency## Vulnerability Details **File Location**: `SKILL.md:9-17`, `SKILL.md:31-35`, and `README.md:21-32` **Vulnerability Type**: Unpinned third-party executable dependency **Risk Level**: Medium ### Vulnerable Code `SKILL.md:9-17`: ```yaml requires: bins: - "node" - "npm" - "curl" env: - "DESHELL_API_KEY" - "DESHELL_PROXY_URL" ``` `SKILL.md:14-17`: ```yaml install: - kind: node package: "@deshell/mcp" bins: [deshell] ``` `SKILL.md:31-35`: ```bash npm install @deshell/mcp ``` `README.md:21-32`: ```markdown ## Installation ### Via NPM ```bash npm install -g @deshell/mcp ``` **Security Note:** Before installing, verify the package provenance: - Check the package details: `npm view @deshell/mcp` - Visit the package page: https://www.npmjs.com/package/@deshell/mcp - Ensure you're installing from the official source ``` ### Technical Analysis The project does not contain the executable implementation of the `deshell` command. Instead, it directs users or an agent environment to install `@deshell/mcp` without specifying an exact version or an integrity hash. Consequently, the code audited in this repository does not determine the behavior ultimately executed. A later package release could differ from the version reviewed by a user. npm installation may also execute package lifecycle scripts, allowing package-controlled code to run during installation rather than only when the `deshell` command is invoked. The README recommends manually reviewing npm package metadata, but this does not provide reproducible integrity verification and does not prevent a compromised or malicious future release from being installed. The installed command is expected to access sensitive configuration, including `DESHELL_API_KEY`, and perform network requests, increasing the consequences of a supply-chain compromise. ### Attack Path 1. An attacker compromises ...[truncated 1699 chars]
Remediation
## Remediation Suggestions 1. Pin `@deshell/mcp` to an exact, audited version rather than relying on npm's latest compatible release. 2. Commit a lockfile containing npm integrity metadata and use a reproducible installation command such as `npm ci`. 3. Verify the package tarball against a separately published checksum or cryptographic signature. 4. Publish or vendor the relevant CLI source so reviewers can inspect the code that handles credentials, headers, URLs, and network requests. 5. Disable npm lifecycle scripts during installation where functionality permits, for example with `--ignore-scripts`. 6. Install and execute the CLI under a minimally privileged account with access only to the required API key and network destinations. 7. Restrict `DESHELL_PROXY_URL` to trusted HTTPS endpoints and avoid placing unrelated secrets in `DESHELL_EXTRA_HEADERS`. 8. Document the exact package version, expected publisher identity, source repository, and verification procedure. 9. Add dependency monitoring and promptly revoke or rotate `DESHELL_API_KEY` credentials if package compromise is suspected.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README instructs agents and users to use `deshell fetch` and `deshell search` through a DeShell proxy, but it does not clearly warn that all requested URLs and search terms are sent to a third-party service. In an agent setting, this can lead to unintended disclosure of sensitive internal URLs, tokens embedded in URLs, proprietary research targets, or confidential search queries to an external provider.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill routes user-supplied URLs, search queries, and optional headers through a third-party proxy, but the documentation does not warn users that this may expose sensitive browsing targets, query contents, or custom header data to an external service. In an agent context, users may unknowingly send internal URLs, confidential research terms, or authentication-related metadata to the proxy, creating a meaningful privacy and data-handling risk.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The curl examples show the API key embedded directly in a command-line header value, which can leak credentials via shell history, terminal logs, process listings, screenshots, or shared command transcripts. Because the skill is aimed at agent users who may copy-paste commands verbatim, this increases the chance of accidental credential disclosure and unauthorized use of the DeShell account.