Back to skill

Security audit

knowbster

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent crypto marketplace integration, but it can use wallet private keys to spend real ETH and upload content to persistent external storage without enough scoping or warnings.

Review before installing. Use a low-value or test wallet, avoid exposing a funded private key to the agent process, require explicit approval for every transaction, and do not upload secrets, personal data, or proprietary content to IPFS/Pinata. Prefer pinned install commands and locked dependencies.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
README.md:8
Finding
Mutable and Unpinned Installation Dependencies Create a Supply-Chain Risk<![CDATA[ ## Vulnerability Details **File Location**: `README.md:8-17`, `SKILL.md:17-20`, `package.json:25-28` **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium ### Vulnerable Code `README.md:8-17`: ```bash ### Via ClawHub ```bash npx clawhub@latest install knowbster ``` ### Via Skills CLI ```bash npx skills add knowbster ``` ``` `SKILL.md:17-20`: ```bash ```bash # Install dependencies npm install ethers axios ``` ``` `package.json:25-28`: ```json "dependencies": { "ethers": "^6.9.0", "axios": "^1.6.0" } ``` ### Technical Analysis The documented installation process executes packages obtained dynamically from external package registries. In particular, `npx clawhub@latest` explicitly selects the latest available release rather than a reviewed version. The `npx skills add knowbster` and `npm install ethers axios` commands also resolve packages according to mutable registry state. The runtime dependencies use caret ranges, permitting installation of newer compatible releases than those originally reviewed. No lockfile is included in the audited project, so dependency versions and integrity hashes are not fixed. Consequently, a future installation may execute or load dependency code that differs from the code present when the Skill was audited. This is especially significant because the Skill is designed to receive a cryptocurrency wallet private key through `process.env.PRIVATE_KEY`. Although the audited `index.js` does not transmit or log the raw private key, malicious installation-time or runtime dependency code executing in the same process could access environment variables and process privileges. The audit found no evidence that the currently declared `ethers` or `axios` packages are malicious. The vulnerability is the mutable and insufficiently reproducible dependency acquisition process. ### Attack Path 1. An attacker compromises a referenced package, its registry account, or a future permitted release. 2. The at ...[truncated 1432 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace mutable CLI references such as `clawhub@latest` with a reviewed exact version: ```bash npx clawhub@X.Y.Z install knowbster ``` 2. Pin runtime dependencies to exact versions rather than caret ranges: ```json "dependencies": { "ethers": "6.9.0", "axios": "1.6.0" } ``` 3. Generate, review, and commit a package lockfile so resolved versions and integrity hashes are reproducible. 4. Direct users to install with: ```bash npm ci ``` Where compatible with the dependency set, disable lifecycle scripts: ```bash npm ci --ignore-scripts ``` 5. Pin the Skills CLI and any other installation utility to an exact reviewed version. Document the expected publisher, package digest, or release checksum. 6. Use automated dependency monitoring and review all lockfile changes before release. Verify package provenance and signatures where supported by the registry. 7. Run the Skill in a restricted process or container with minimal filesystem and network access. Supply wallet credentials only when a transaction is required. 8. Prefer an external wallet or isolated signing service so the JavaScript process does not receive an exportable private key. Require explicit user approval and transaction previews before signing value-bearing operations. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (12)

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill encourages ETH purchases and IPFS uploads but does not prominently warn that blockchain transactions are irreversible, spend real funds, and may incur gas/platform fees, nor that IPFS-pinned content may become effectively public and persistent. In a marketplace skill intended for autonomous agents, omission of these warnings materially raises the risk of financial loss and accidental disclosure of sensitive data.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The README instructs users to run `npx clawhub@latest install knowbster`, which fetches and executes the latest remote package code at install time rather than a vetted, pinned version. If the upstream package is compromised or a malicious update is published, users or agents could execute attacker-controlled code during installation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
89% confidence
Finding
The command `npx skills add knowbster` also relies on executing an unpinned package from the registry, creating supply-chain risk through namespace takeover, dependency compromise, or malicious future releases. In an agent ecosystem, this is especially risky because automated setup may run such commands non-interactively and at scale.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The Quick Start shows initializing the client directly with `process.env.PRIVATE_KEY` and immediately purchasing knowledge, but it does not warn that this credential controls blockchain funds or that the purchase may spend real ETH on Base L2 mainnet. In the context of a crypto-enabled skill for autonomous agents, this omission materially increases the chance of unsafe key handling, accidental live transactions, or users testing with funded wallets.

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill demonstrates access to sensitive environment-backed capabilities such as PRIVATE_KEY and PINATA_JWT, but the manifest does not declare any explicit tool scope or permission boundaries. In an agent ecosystem, this weakens auditability and can allow the skill to be invoked without clear user understanding that wallet credentials and external network actions are involved.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The description uses broad trigger phrases like knowledge acquisition and specialized information, which could cause the skill to activate for many ordinary requests unrelated to cryptocurrency trading. Because this skill can lead to purchases and external data retrieval, overbroad invocation increases the chance of unintended wallet use or exposure to untrusted content.

External Transmission

Medium
Category
Data Exfiltration
Content
```javascript
const uploadToIPFS = async (content) => {
  const response = await fetch('https://api.pinata.cloud/pinning/pinJSONToIPFS', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.PINATA_JWT}`,
Confidence
88% confidence
Finding
The skill sends user-supplied knowledge content and metadata to an external third-party service (Pinata/IPFS), which is an actual external transmission of potentially sensitive or proprietary information. In this skill's context, the danger is heightened because the content is intended for decentralized storage, making disclosure broader and more durable than a normal API call.

External Transmission

Medium
Category
Data Exfiltration
Content
```javascript
const uploadToIPFS = async (content) => {
  const response = await fetch('https://api.pinata.cloud/pinning/pinJSONToIPFS', {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.PINATA_JWT}`,
Confidence
88% confidence
Finding
The skill sends user-supplied knowledge content and metadata to an external third-party service (Pinata/IPFS), which is an actual external transmission of potentially sensitive or proprietary information. In this skill's context, the danger is heightened because the content is intended for decentralized storage, making disclosure broader and more durable than a normal API call.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The listing example passes the language value "en" directly, which imposes an English locale in the natural-language metadata flow. The document does not present this as optional user input or justify English as a required locale for a region-specific purpose.

Unpinned Dependencies

Low
Category
Supply Chain
Content
},
  "homepage": "https://knowbster.com",
  "dependencies": {
    "ethers": "^6.9.0",
    "axios": "^1.6.0"
  }
}
Confidence
92% confidence
Finding
The dependency on ethers uses a caret range (^6.9.0), which allows automatic installation of newer minor and patch releases rather than a single audited version. In a crypto-enabled agent skill, dependency drift can introduce breaking behavior or supply-chain risk if a later release contains a vulnerability or malicious compromise.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"homepage": "https://knowbster.com",
  "dependencies": {
    "ethers": "^6.9.0",
    "axios": "^1.6.0"
  }
}
Confidence
97% confidence
Finding
The dependency on axios is not pinned and uses a caret range (^1.6.0), so builds may resolve to different releases over time. Because axios has a history of security advisories, leaving the version floating increases the chance of unexpectedly pulling a vulnerable or otherwise risky version into a network-facing skill.

Unverifiable Dependency: axios has 16 known advisory(ies) (CVE-2026-44494 (axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `co); CVE-2026-44495 (axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollut); CVE-2025-62718 (Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
94% confidence
Finding
The manifest references axios without pinning an exact release, while the package has multiple known advisories affecting some versions. In a skill that interacts with external APIs and cryptocurrency-related services, an affected axios version could increase exposure to issues like SSRF, request manipulation, credential leakage, or man-in-the-middle style abuse depending on how the library is used elsewhere in the codebase.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
index.js:70