T09 · Insecure Skill Coding Practices
- Location
scripts/setup.sh:49- Finding
Arbitrary Code Execution Through Python Source Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Kaspa messaging skill is purpose-aligned, but its setup and background polling guidance create avoidable wallet-secret, local-code-execution, and persistence risks that users should review before installing.
Install only if you are comfortable with a wallet-connected tool. Use a dedicated wallet with minimal funds, avoid passing a seed phrase on the command line, review and lock down mcporter.json permissions, only point setup.sh at a trusted kasia-mcp checkout, and do not enable background polling unless you explicitly choose its schedule, storage location, retention, and removal process.
scripts/setup.sh:49Arbitrary Code Execution Through Python Source Injection
scripts/setup.sh:26Automatic Execution of Scripts From a Caller-Supplied npm Project
scripts/setup.sh:49Wallet Mnemonic Exposed Through Command-Line Input and Plaintext Configuration
SKILL.md:70Documentation Encourages Unbounded Cross-Session Background Polling
The script accepts a wallet mnemonic via a command-line argument and then persists it into the mcporter configuration as an environment variable. This is dangerous because command-line arguments may be exposed via shell history or process listings, and the mnemonic is then stored in plaintext on disk, directly risking wallet compromise if the host or config file is accessed.
The skill invokes external tooling and explicitly instructs creating a polling script that writes message data to a file, but it does not declare any tool scope such as allowed-tools or permissions. That mismatch weakens auditability and least-privilege controls, making it easier for an agent or operator to grant broader capabilities than intended, especially where file writes and blockchain actions are involved.
The skill promotes encrypted on-chain messaging and private-data storage but does not warn that blockchain writes are persistent, visible at the metadata layer, and cost money. Even if content is encrypted, addresses, timing, counterparties, message frequency, and any mis-stored data may create lasting privacy exposure, while users may also incur irreversible transaction costs.
The setup instructions tell users to supply a wallet mnemonic on the command line and note that a wallet mnemonic or private key is configured in mcporter, but they do not warn that these are highly sensitive secrets. Command-line arguments, shell history, process listings, logs, or config files may expose the mnemonic/private key, which could let an attacker steal the wallet and impersonate the user on-chain.
The script creates or modifies the mcporter configuration automatically without prompting the user for confirmation. While this is common setup behavior, it can unexpectedly alter local tool configuration and trust boundaries, especially because this skill configures a messaging/payment-related MCP server that may later handle sensitive wallet operations.
The protocol reference directs use of a default third-party indexer and documents address-based query endpoints, but it does not warn that querying these services exposes wallet addresses, timing, aliases/scopes, and conversation/payment metadata to an external operator. Even if message contents are encrypted, this can still leak relationship and activity patterns, which is a real privacy risk in a messaging skill centered on confidential communication.
No suspicious patterns detected.