T09 · Insecure Skill Coding Practices
- Location
manifest.json:76- Finding
Security Controls Are Advisory Under the Documented Host-Native Runtime
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is coherent for a MuHaven portfolio agent, but its financial authority is paired with installation and runtime documentation that weakens or overstates its security boundaries.
Install only if you are comfortable with MuHaven, its broker, and the host OpenClaw runtime having user-level execution exposure in the documented host_native setup. Prefer exact pinned runtime and CLI versions, an isolated OS account or container, and read-only mode unless you intend to stage buy, claim, or pause actions.
manifest.json:76Security Controls Are Advisory Under the Documented Host-Native Runtime
SKILL.md:155Installation Instructions Execute Mutable and Unpinned Global Packages
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
"stdio": "manifest_only"
},
"secrets": {
"storage": "os_keychain",
"deny_paste_ui": true,
"references": [
{
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
"stdio": "manifest_only"
},
"secrets": {
"storage": "os_keychain",
"deny_paste_ui": true,
"references": [
{
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
"stdio": "manifest_only"
},
"secrets": {
"storage": "os_keychain",
"deny_paste_ui": true,
"references": [
{
The documentation creates a misleading trust boundary by stating the skill 'only talks to the broker over Unix-socket / named-pipe IPC' while the manifest explicitly permits direct egress to https://api.muhaven.app and https://muhaven.app. Users or reviewers may rely on the docs to assume all sensitive flows are broker-mediated, when in reality the skill can directly communicate with remote MuHaven infrastructure, increasing the risk of unnoticed data transmission or architectural misunderstandings.
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"@muhaven/mcp": "0.1.2"
},
"devDependencies": {
"@types/node": "^22.0.0",
"rimraf": "^5.0.0",
"tsup": "^8.5.1",
"tsx": "^4.21.0",
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
},
"devDependencies": {
"@types/node": "^22.0.0",
"rimraf": "^5.0.0",
"tsup": "^8.5.1",
"tsx": "^4.21.0",
"typescript": "^5.7.0",
The unpinned tsup devDependency increases supply-chain risk because future installs may resolve to different releases, and this package family has at least one known advisory in some versions. While tsup is a build-time tool rather than a runtime dependency, compromised or vulnerable build tooling can still affect produced artifacts or developer environments.
"devDependencies": {
"@types/node": "^22.0.0",
"rimraf": "^5.0.0",
"tsup": "^8.5.1",
"tsx": "^4.21.0",
"typescript": "^5.7.0",
"vitest": "^3.0.0"
This is a true supply-chain vulnerability risk because the manifest does not pin tsup, so installs may resolve to a version affected by a known advisory without the repository clearly documenting which version is actually used. Since tsup is build tooling, the primary exposure is to developers/CI and potentially to integrity of generated artifacts, not directly to end users at runtime.
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"@types/node": "^22.0.0",
"rimraf": "^5.0.0",
"tsup": "^8.5.1",
"tsx": "^4.21.0",
"typescript": "^5.7.0",
"vitest": "^3.0.0"
},
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"rimraf": "^5.0.0",
"tsup": "^8.5.1",
"tsx": "^4.21.0",
"typescript": "^5.7.0",
"vitest": "^3.0.0"
},
"engines": {
The unpinned vitest devDependency introduces supply-chain uncertainty, and the package has multiple advisories affecting some versions. Even though vitest is used in testing rather than production runtime, vulnerable test tooling can expose developer or CI environments, especially if UI/server features or mock-related functionality are used.
"tsup": "^8.5.1",
"tsx": "^4.21.0",
"typescript": "^5.7.0",
"vitest": "^3.0.0"
},
"engines": {
"node": ">=20.0.0"
This is a true vulnerability risk because vitest is not pinned and has multiple known advisories in some releases, including arbitrary file read and potential code execution scenarios in certain modes. Although vitest is a dev/test dependency, those impacts can materially affect developer workstations or CI runners if vulnerable features are enabled or malicious test content is encountered.