T08 · Insecure Dependencies
- Location
SKILL.md:27- Finding
Unpinned Third-Party MCP Package Allows Supply-Chain Code Execution
- Content
View full analysis
Vulnerability Details
File Locations:
SKILL.md:27README.md:6-8
Vulnerability Type: Unpinned executable third-party dependency
Risk Level: MediumVulnerable Code
SKILL.md:27:bash openclaw mcp set aaddyy '{"command":"npx","args":["@aaddyy/mcp-server"],"env":{"AADDYY_API_KEY":"aip_your_key_here"}}'README.md:6-8:bash openclaw mcp set aaddyy '{"command":"npx","args":["@aaddyy/mcp-server"],"env":{"AADDYY_API_KEY":"YOUR_KEY"}}'Technical Analysis
The documented setup executes
@aaddyy/mcp-serverthroughnpxwithout specifying an exact package version or enforcing an integrity hash. Consequently, installation behavior depends on whichever package release the registry resolves at execution time. The effective executable can therefore change after this skill has been reviewed.The MCP process is also explicitly provided with
AADDYY_API_KEY. Because an npm package can run arbitrary JavaScript under the invoking user's account, a compromised or malicious future package release could access this credential and perform any operation permitted by the local process environment.The documentation additionally states in
SKILL.md:10andSKILL.md:38that tools are loaded dynamically from the remote AADDYY API and that new tools can appear without a skill update. This further expands the external trust boundary, although the audited files do not establish that the current remote tool definitions are malicious.Attack Path
- An attacker compromises the npm publisher account, the package release process, or another relevant supply-chain component for
@aaddyy/mcp-server. - The attacker publishes a modified release under the same package name.
- A user follows the documented command, or the configured integration invokes
npxin a way that resolves the unpinned release. npxdownloads and executes the attacker-controlled package under the agent user's operating-system account.- The malicious proces ...[truncated 1133 chars]
- Remediation
View remediation
Remediation Suggestions
-
Pin the MCP package to a reviewed exact version instead of resolving the latest available release:
bash openclaw mcp set aaddyy '{"command":"npx","args":["--yes","@aaddyy/mcp-server@EXACT_VERSION"],"env":{"AADDYY_API_KEY":"YOUR_KEY"}}' -
Prefer installing the package through a committed lockfile and invoking the verified local binary. Avoid floating version ranges.
-
Verify package integrity using registry integrity metadata, checksums, signatures, or provenance attestations in the deployment pipeline.
-
Audit each package update before changing the pinned version. Enable dependency monitoring for publisher changes and suspicious releases.
-
Run the MCP server in a restricted environment with minimal filesystem permissions, an outbound-network allowlist, and no unrelated environment variables.
-
Use a dedicated, revocable API key with the minimum required account permissions and spending limits. Rotate it immediately if package compromise is suspected.
-
Require explicit administrative approval before enabling newly introduced remote tools. Pin or version the remote tool manifest where supported.
-
Document the precise reviewed package version and expected package checksum in both
SKILL.mdandREADME.md.
-
