T09 · Insecure Skill Coding Practices
- Location
src/index.js:9- Finding
Environment API Key Can Be Exfiltrated Through a Caller-Controlled Base URL
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly a normal crypto price tracker, but it has under-disclosed credential and supply-chain risks users should review before installing.
Review the package identity before installing, prefer a pinned version or lockfile-managed install, and avoid running unpinned npx commands. Do not set PRISM_API_KEY in an environment where untrusted code can pass a custom baseUrl to PortfolioTracker, because that key may be sent to the configured endpoint.
src/index.js:9Environment API Key Can Be Exfiltrated Through a Caller-Controlled Base URL
skill.json:7Conflicting Package and Repository Identities Create Supply-Chain Confusion
The README instructs users to run the package via npx crypto-portfolio-tracker-api without pinning a specific version. Because npx fetches and executes the latest published package by default, a malicious update, account compromise, or dependency hijack could cause arbitrary code execution on the user's machine when they follow the documentation.
This command example also uses unpinned npx, which executes whatever version is current in the registry at runtime. If the package or one of its publish paths is compromised, users invoking the documented command may unknowingly run attacker-controlled code.
The track portfolio.json example is another instance of direct execution of an unpinned package from the registry. In the context of a crypto portfolio tool, users may be particularly attractive targets, and arbitrary code execution could expose wallet-related files, API keys, or other sensitive financial data.
The skill describes code usage and CLI execution that inherently requires network access and may access environment configuration, but it does not declare any explicit tool scope such as allowed-tools or permissions. This creates an authorization and review gap: consumers cannot easily tell what capabilities the skill expects, and an agent/runtime may grant broader access than intended.
Using npx with an unpinned package name causes the latest published package version to be fetched and executed at runtime, which introduces a supply-chain risk. If the package is compromised, typo-squatted, or updated with malicious code, users invoking the documented command could execute attacker-controlled code on their system.
This second npx example has the same unpinned execution risk: it may download and run whatever version is current at invocation time. In security-sensitive environments, that creates a straightforward path for supply-chain compromise through malicious upstream publication or account takeover.
Detected: suspicious.env_credential_access