T08 · Insecure Dependencies
- Location
SKILL.md:18- Finding
Mutable npm Packages Are Executed Through Unpinned npx Commands
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Solana developer skill appears purpose-aligned, but it gives agents access to payments, persisted credentials, and transaction submission while relying on mutable npm installs and under-disclosed safety tradeoffs.
Review this skill before installing in any wallet, production, or billing context. Pin and verify the Helius MCP/CLI packages instead of using @latest, keep funded signup wallets at the minimum balance, require explicit confirmation before payments, upgrades, renewals, tips, or transaction signing, prefer HTTPS endpoints, authenticate webhook receivers, and protect or rotate any API keys, JWTs, and keypair files it creates.
SKILL.md:18Mutable npm Packages Are Executed Through Unpinned npx Commands
references/sender.md:82Signed Transactions May Be Submitted Over Unencrypted HTTP
references/webhooks.md:163Webhook Receiver Template Processes Unauthenticated Events
references/priority-fees.md:30API Keys Are Embedded in Request and WebSocket URLs
The skill instructs users to install and run an MCP server via npx helius-mcp without a fixed version, which allows whatever package is current at execution time to be fetched and executed. If the upstream package is compromised, replaced, or a breaking release is published, users could run unreviewed code with their local privileges.
This second unpinned npx helius-cli@latest occurrence has the same supply-chain execution risk: it fetches and runs whatever code is current on the registry at the time of use. In the context of account signup and payment steps, compromise could lead to credential theft, malicious transaction prompts, or user fund loss.
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
SKILL_NAME="helius"
SKILL_DIR="$(cd "$(dirname "$0")" && pwd)"
# Default: install to personal skills
TARGET_BASE="$HOME/.claude/skills"
MODE="personal"
The installer instructs users to add an MCP server using npx helius-mcp@latest, which pulls and executes the newest published package version at install/runtime rather than a reviewed, pinned release. If the package is compromised upstream or a breaking/malicious version is published, users could execute untrusted code in a high-trust local development context.
The onboarding flow states that API keys, JWTs, and keypairs are automatically persisted to shared config and ~/.helius-cli/keypair.json without a prominent warning or consent step. Persisting long-lived credentials by default can expose sensitive secrets to other local users, backups, misconfigured permissions, or later compromise of the host.
The upgrade and renewal instructions describe executing plan changes and processing USDC payments, but do not clearly warn that these actions trigger real billing and may be irreversible or difficult to reverse. In an agentic workflow, insufficient confirmation language raises the risk of unintended financial transactions being initiated by users or automation.
The installation instruction uses npx helius-mcp@latest, which pulls mutable code at execution time rather than a pinned, reviewed version. In an agent/tooling context, this increases supply-chain risk because a compromised or malicious newly published version could be executed immediately with the user's local privileges.
The skill makes skipPreflight: true a mandatory requirement and states transactions will be rejected otherwise, but it does not clearly warn that preflight simulation is a safety check that helps catch malformed, failing, or unintended transactions before broadcast. In a transaction-sending skill, normalizing preflight bypass as default increases the chance that users submit invalid or unsafe transactions without understanding the tradeoff.
The documentation makes a SOL tip transfer mandatory and provides concrete minimum amounts, but does not prominently warn that every transaction will spend additional user funds beyond the primary transaction intent. In wallet or agent-driven flows, this can lead to hidden or poorly understood balance depletion, especially when tips are dynamically increased from an external API.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
transaction.sign([keypair]);
// 5. Submit to Sender
const response = await fetch('https://sender.helius-rpc.com/fast', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
transaction.sign([keypair]);
// 5. Submit to Sender
const response = await fetch('https://sender.helius-rpc.com/fast', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
const signedTx = await signTransactionMessageWithSigners(tx);
const base64Tx = getBase64EncodedWireTransaction(signedTx);
const res = await fetch("https://sender.helius-rpc.com/fast", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
Subtle instructions detected that may alter agent decision-making or introduce hidden biases.
## MCP Tools
All Wallet API endpoints have direct MCP tools. ALWAYS use these instead of generating raw API calls:
| MCP Tool | Endpoint | What It Does |
|---|---|---|
This markdown file instructs users to investigate wallets by identifying addresses, checking balances, and tracing funds, which can reveal sensitive financial and attribution information. The document does not include any caution about privacy, consent, or responsible handling of investigative results.
The document explains that Helius pushes parsed transaction data to 'your server via HTTP POST' but does not include an explicit warning about data transmission to an external endpoint. Because this markdown file instructs users how to configure outbound delivery of account activity and transaction details, it should clearly disclose the privacy and data-handling implications.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -X POST "https://api-mainnet.helius-rpc.com/v0/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
The instructions require the agent to "ALWAYS use Orb" and explicitly forbid other explorers. This imposes a specific service preference on users without opt-in or justification, which fits the language/locale-style policy concern about forcing a particular user-facing choice.
The table states that deleteWebhook will 'Permanently remove a webhook', but the overall skill description does not provide a user-facing caution about the operational impact of this destructive action. Since markdown files should warn about behaviors affecting system integrity or monitoring continuity, the irreversible loss of event delivery should be called out more explicitly.
Detected: suspicious.exposed_secret_literal