T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:28- Finding
Unpinned Remote Dependencies Permit Post-Review Code Substitution
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 28-34
Vulnerability Type: Unpinned remote payload retrieval and supply-chain risk
Risk Level: HighThe Skill directs users to download and execute an unpinned npm package and install a plugin from the mutable
mainbranch of a personal GitHub repository:bash npx @deepseek-ai/dsh plugin --profile web add "github:Aidenwu0209/dsh-PaddleOCR-Skills#main" npx @deepseek-ai/dsh webTechnical Analysis
npx @deepseek-ai/dshdoes not specify an exact package version or integrity value. Depending on the local environment,npxcan retrieve and execute the package currently published under that name.The plugin source is similarly referenced through
#main, which is a mutable Git branch rather than an immutable, reviewed commit. The effective code installed by these instructions can therefore change after this Skill has been audited. The downloaded DSH package and plugin implementation are not present in the audited project, so their behavior cannot be validated from the available files.This creates both a remote payload retrieval risk and an insecure dependency risk. Compromise of the npm package, GitHub account, repository, branch, maintainer credentials, or publication process could substitute malicious code without requiring any modification to this Skill.
Attack Path
- An attacker compromises the npm package publication process, the referenced GitHub account, or its repository.
- The attacker publishes a malicious package version or pushes malicious plugin code to the mutable
mainbranch. - A user follows the Skill and runs the documented
npxinstallation command. npxretrieves and executes the current package, which then retrieves the current plugin content from GitHub.- The substituted code executes with the privileges of the user running DSH.
- Malicious code could access data available to that user or interfere with ...[truncated 768 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
@deepseek-ai/dshto a specific, audited version rather than allowingnpxto resolve the current release. - Replace the mutable
#mainreference with a full, audited Git commit SHA. - Publish and verify cryptographic integrity hashes or signed release attestations before installation.
- Prefer an official, controlled release artifact over installation directly from a personal repository branch.
- Review the exact DSH package and plugin source corresponding to the pinned versions before recommending execution.
- Run installation and the web service with least privilege in an isolated environment, without unnecessary filesystem access or credentials.
- Grant credentials only after installation integrity and plugin behavior have been verified, and constrain tokens to the minimum permissions required.
- Document an update process that requires security review before changing either pinned version or commit.
- Pin
