T08 · Insecure Dependencies
- Location
SKILL.md:41- Finding
Unpinned Third-Party Packages Are Downloaded and Executed
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:41-44andSKILL.md:111-112
Vulnerability Type: Insecure dependency installation and execution
Risk Level: HighVulnerable Code
SKILL.md:41-44:yaml agentmail: command: "npx" args: ["-y", "agentmail-mcp"] env:SKILL.md:111-112:text - The `mcp` Python package must be installed: `pip install mcp` - Real-time inbound email (webhooks) requires a public server — use `list_threads` polling via cronjob instead for personal useTechnical Analysis
The MCP configuration invokes
npx -y agentmail-mcpwithout specifying a reviewed package version or verifying an integrity digest. If the package is not already available locally,npxcan retrieve it from the configured npm registry. The-yoption suppresses the interactive installation prompt, allowing the retrieved package to execute automatically when Hermes starts the MCP server.The documented
pip install mcpcommand is similarly unpinned. Its resolved version and transitive dependency graph can change over time without any corresponding change to this audited skill. Neither installation path specifies hashes, a lockfile, or another integrity control.This does not establish that the current packages are malicious. It creates a supply-chain exposure in which a compromised maintainer account, registry, package release, or transitive dependency could cause future users to retrieve attacker-controlled code.
Attack Path
- An attacker compromises the relevant package publishing account, package registry entry, or a transitive dependency.
- The attacker publishes a malicious version under the package name used by the skill.
- A user follows the setup instructions or restarts Hermes with the documented MCP configuration.
npx -yresolves, downloads, and executes the unpinnedagentmail-mcppackage without an installation confirmation.- Alternatively, ...[truncated 886 chars]
- Remediation
View remediation
Remediation Suggestions
- Pin
agentmail-mcpto a specifically reviewed version, for example by using an exact version rather than an unconstrained package name. - Remove
-ywhere feasible so unexpected installation is not silently accepted. - Install dependencies as a separate, explicit setup step and run the MCP server from a locked local installation.
- Commit and enforce an npm lockfile for a wrapper project if the platform supports it.
- Pin the Python
mcppackage and its transitive dependencies to reviewed versions. - Require package hashes for Python installation, such as through a hash-locked requirements file and
pip install --require-hashes. - Verify package provenance, maintainers, signatures or attestations, and integrity digests before deployment.
- Run the MCP server under a dedicated, minimally privileged account or sandbox with restricted filesystem and network access.
- Establish dependency update review and vulnerability-monitoring procedures rather than automatically consuming new releases.
- Pin
