Back to skill

Security audit

KarmaBank

Security checks for vulnerabilities and agentic risk

Overview

KarmaBank is a coherent USDC lending skill, but its financial and credential handling has serious review-worthy safety gaps before installation.

Review this skill before installing, especially in any environment with real Circle credentials or funds. Use only isolated testnet/sandbox credentials, avoid running npm install until the local file dependency is reviewed or scripts are disabled, do not paste secrets into shell commands, and do not rely on its loan ledger for real accounting until transfers fail closed and Moltbook identity ownership is verified.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (5)

T09 · Insecure Skill Coding Practices

Error
Location
src/adapters/circle.ts:162
Finding
Circle API Failures Are Converted into Fabricated Successful Transfers<![CDATA[ ## Vulnerability Details **File Location**: `src/adapters/circle.ts:162-168`, `src/adapters/circle.ts:213-219` **Related Call Sites**: `src/cli/commands/borrow.ts:91-98`, `src/cli/commands/repay.ts:68-86` **Vulnerability Type**: Fail-open financial transaction handling **Risk Level**: High ### Vulnerable Code ```ts // src/adapters/circle.ts:162-168 } catch (error) { // If Circle API fails, return mock success for demo return { success: true, transactionId: `mock-tx-${Date.now()}`, status: 'COMPLETE', }; } ``` ```ts // src/adapters/circle.ts:213-219 } catch (error: any) { // If Circle API fails, return mock success for demo return { success: true, transactionId: `mock-repay-${Date.now()}`, status: 'COMPLETE', }; } ``` The fabricated results are trusted by the borrowing and repayment commands: ```ts // src/cli/commands/borrow.ts:91-98 const result = await disburseLoan(agent.walletAddress, amount, poolWallet.id); if (result.success || result.status === 'INITIATED') { // Update agent ledger agentRegistry.updateOutstandingLoan(agent.id, amount); console.log(`✅ Loan created successfully!`); ``` ```ts // src/cli/commands/repay.ts:68-86 const transferResult = await receiveRepayment( agent.walletId, agent.walletAddress, poolWallet.address, amount ); if (!transferResult.success) { console.error(`\n❌ Transfer failed: ${transferResult.error || 'Unknown error'}\n`); return; } // Update ledger only after successful transfer const newOutstanding = outstanding - amount; agentRegistry.updateOutstandingLoan(agent.id, newOutstanding); ``` ### Technical Analysis The adapter enters mock mode correctly when no Circle configuration exists. However, after a real Circle client has been initialized, operational errors are still converted into mock transactions with `success: true` and `status: 'COMPLETE'`. This violates the fail-closed requirement for financial operations. There is no distinction between an ...[truncated 1649 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove all mock-success responses from exception handlers used after real Circle configuration has been selected. 2. Return a genuine failure object: ```ts catch (error) { return { success: false, error: sanitizeCircleError(error), }; } ``` 3. Require an explicit configuration value such as `MOCK_MODE=true` before any mock transfer is permitted. 4. Refuse to combine real credentials with mock transaction fallback. 5. Keep loans and repayments in a pending state until the transaction is independently confirmed through `getTransactionStatus()`. 6. Store the real Circle transaction ID and reconcile it before changing outstanding balances. 7. Add idempotency keys and transactional ledger updates to prevent duplicate processing. 8. Add tests proving that timeouts, HTTP errors, rejected transactions, and invalid credentials do not alter balances. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/circle-entity-secret.ts:29
Finding
Circle API Keys and Wallet Entity Secrets Are Exposed in Terminal Output<![CDATA[ ## Vulnerability Details **File Location**: `scripts/circle-entity-secret.ts:29-36`, `scripts/circle-entity-secret.ts:72-79` **Duplicated Location**: `scripts/circle-entity-secret.js:21-28`, `scripts/circle-entity-secret.js:64-71` **Additional Instances**: `scripts/generate-secret-simple.ts:23-39`, `scripts/generate-circle-secret.ts:67-69` **Vulnerability Type**: Sensitive credential disclosure through logs **Risk Level**: High ### Vulnerable Code ```ts console.log('=== Circle Entity Secret Generator ===\n'); console.log('API Key:', CIRCLE_API_KEY.substring(0, 30) + '...\n'); try { // Step 1: Generate 32-byte hex entity secret console.log('1. Generating entity secret (32 bytes)...'); const entitySecret = crypto.randomBytes(32).toString('hex'); console.log(` ✅ Generated: ${entitySecret.substring(0, 32)}...\n`); ``` ```ts // Output results console.log('=== RESULTS ===\n'); console.log('🔐 ENTITY SECRET (SAVE THIS!):'); console.log(entitySecret); console.log('\n📝 ENTITY SECRET CIPHERTEXT:'); console.log(ciphertext); console.log('\n📋 UPDATE .env WITH:'); console.log(`CIRCLE_ENTITY_SECRET=${entitySecret}\n`); ``` Another script prints the complete API key: ```ts // scripts/generate-circle-secret.ts:67-69 console.log('1. Save these to your .env:'); console.log(`CIRCLE_API_KEY=${CIRCLE_API_KEY}`); console.log(`CIRCLE_ENTITY_SECRET=<from dashboard>`); ``` ### Technical Analysis The setup scripts write substantial portions of the Circle API key and complete plaintext entity secrets to standard output. One script prints the entire API key. These values are high-sensitivity authentication and wallet-control material. Standard output is not a secure secret-delivery channel. It is commonly retained by CI systems, shell session recorders, terminal scrollback, Agent transcripts, centralized logging platforms, and automation wrappers. Printing the same entity secret multiple times increases the exposure surface. Masking only the end of an ...[truncated 1348 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove all output containing API keys, key prefixes, plaintext entity secrets, and environment assignment lines. 2. Display only non-sensitive confirmation, such as: ```ts console.log('Entity secret generated successfully.'); ``` 3. Deliver generated secrets directly to an approved secret manager where possible. 4. If local storage is necessary, use exclusive file creation with mode `0o600` and display only the protected file path. 5. Prevent secret values from entering exception objects or debug logs. 6. Add automated secret-redaction tests for all setup scripts. 7. Rotate any credentials that may already have appeared in retained logs. 8. Restrict and purge historical CI logs or Agent transcripts containing previous output. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/generate-circle-secret.ts:38
Finding
Private Key Is Written Insecurely to a Predictable Shared Temporary File<![CDATA[ ## Vulnerability Details **File Location**: `scripts/generate-circle-secret.ts:38-42` **Vulnerability Type**: Unsafe temporary file and private-key handling **Risk Level**: High ### Vulnerable Code ```ts // Save private key const privateKeyPath = '/tmp/circle-private-key.pem'; fs.writeFileSync(privateKeyPath, privateKey); console.log(` 📁 Private key saved to: ${privateKeyPath}`); console.log(' ⚠️ KEEP THIS SAFE! Needed for transactions.\n'); ``` ### Technical Analysis The script writes private key material to a fixed path in the globally shared `/tmp` directory. It does not: - Create the file exclusively. - Reject a pre-existing symbolic link. - Explicitly enforce owner-only permissions. - Use a private per-user directory. - Delete the key after use. - Protect against concurrent runs overwriting one another. A predictable path in a shared temporary directory creates symlink and file-replacement risks. An attacker with local access may prepare `/tmp/circle-private-key.pem` as a symbolic link before a privileged user invokes the script. The write may then target an attacker-selected file. Depending on the process umask, the generated key may also be more broadly readable than intended. ### Attack Path 1. A local attacker predicts the fixed path `/tmp/circle-private-key.pem`. 2. The attacker creates a symbolic link or otherwise controls the path before the script runs. 3. An administrator or wallet operator invokes the script with greater filesystem privileges. 4. `fs.writeFileSync()` follows the path without exclusive creation or symlink checks. 5. The private key is written to the attacker-selected target or left in a location the attacker can access. 6. The attacker retrieves the key material or uses the redirected write to damage another file accessible to the victim process. ### Impact Assessment Successful exploitation can disclose private key material used for wallet operations. A symlink attack may also overwrite files writable b ...[truncated 261 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not persist the private key unless persistence is strictly necessary. 2. Prefer an operating-system credential store or dedicated secret manager. 3. If a temporary file is unavoidable: - Create a private directory with `fs.mkdtempSync()`. - Set directory permissions to `0o700`. - Open the file with exclusive creation flags. - Set file permissions explicitly to `0o600`. - Verify that the destination is not a symbolic link. 4. Use a user-controlled secure path rather than a fixed path under `/tmp`. 5. Remove temporary key material in a `finally` block. 6. Never print the key content. 7. Document backup, rotation, and destruction procedures for any private keys that must be retained. ]]>

T05 · Unauthorized Access and Privilege Escalation

Error
Location
src/cli/commands/register.ts:20
Finding
Moltbook Reputation Can Be Registered and Used Without Proving Agent Ownership<![CDATA[ ## Vulnerability Details **File Location**: `src/cli/commands/register.ts:20-32` **Related Locations**: `src/cli/commands/wallet.ts:18-43`, `src/cli/commands/borrow.ts:27-33` **Vulnerability Type**: Missing authentication and identity binding **Risk Level**: High ### Vulnerable Code ```ts // Check if already registered const existing = agentRegistry.get(name); if (existing) { console.log(`Agent "${name}" is already registered.`); console.log(`Run: credit check ${name}\n`); return; } // Fetch Moltbook profile console.log(`Fetching Moltbook profile for @${name}...`); const profile = await getMoltbookProfile(name); // Calculate credit score console.log('Calculating credit score...'); const score = calculateCreditScore(profile as any); // Register agent const result = creditLedger.registerAgent( name, score.rawScore, score.maxBorrow ); ``` Wallet creation subsequently trusts only the registered name: ```ts const agent = agentRegistry.get(name); if (!agent) { console.log(`Agent "${name}" is not registered.`); console.log(`Run: credit register ${name}\n`); return; } const wallet = await createAgentWallet(name); agentRegistry.update(agent.id, { walletAddress: wallet.address, walletId: wallet.id }); ``` Borrowing similarly authorizes by name: ```ts const agent = agentRegistry.get(name); if (!agent) { console.log(`Agent "${name}" is not registered.`); console.log(`Run: credit register ${name}\n`); return; } ``` ### Technical Analysis Registration retrieves a Moltbook profile by an arbitrary supplied name, but it does not prove that the caller controls that identity. The project contains identity-token generation and verification methods in `src/adapters/moltbook.ts`, but the registration and financial command paths do not use them. The bearer API key proves only that the caller has a Moltbook API credential; it is not checked against the identity being registered. The response from `/agents/profile?name=...` is ther ...[truncated 1380 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Require Moltbook identity-token verification during registration. 2. Use a fixed, application-controlled audience value rather than accepting an arbitrary caller-supplied audience. 3. Verify that the authenticated API profile ID matches the profile being registered. 4. Store the immutable verified Moltbook agent ID, not only a display name. 5. Bind each verified identity to an authenticated local or service principal. 6. Require authorization for every wallet, borrowing, repayment, and profile-update operation. 7. Prevent names from being used as security principals because names may be mutable or reusable. 8. Add replay protection and expiry checks for identity tokens. 9. Add tests demonstrating that one Moltbook credential cannot register or borrow as another profile. ]]>

T08 · Insecure Dependencies

Error
Location
package.json:39
Finding
Unaudited Local Circle Dependency Executes an Installation Lifecycle Script<![CDATA[ ## Vulnerability Details **File Location**: `package.json:39` **Lockfile Evidence**: `package-lock.json:20-24` **Vulnerability Type**: Untrusted local dependency and install-time code execution **Risk Level**: High ### Vulnerable Code ```json "dependencies": { "@circle-fin/developer-controlled-wallets": "^10.1.0", "@circle/openclaw-wallet-skill": "file:../skills/circle-wallet", "@types/uuid": "^10.0.0", "axios": "^1.13.4", "commander": "^14.0.3", "dotenv": "^17.2.3", "node-forge": "^1.3.3", "uuid": "^13.0.0" } ``` The lockfile records that the external local package has an install script: ```json "../skills/circle-wallet": { "name": "@circle/openclaw-wallet-skill", "version": "1.1.0", "hasInstallScript": true, "license": "MIT", "dependencies": { "@circle-fin/developer-controlled-wallets": "^10.1.0", "commander": "^12.1.0", "dotenv": "^16.4.0" } } ``` ### Technical Analysis The project instructs users to run `npm install`, but one dependency resolves to `../skills/circle-wallet`, which is outside the audited project directory. The referenced package was not included in the supplied artifact, so its source and lifecycle script could not be reviewed. Because the dependency has `hasInstallScript: true`, installing the audited project may execute code supplied by mutable content in the sibling directory. A `file:` dependency does not provide registry integrity metadata that binds it to a reviewed immutable artifact. This creates an install-time trust boundary not disclosed by the project’s own source tree. The observed configuration does not prove that the absent package is malicious, but it creates a confirmed uncontrolled code-execution surface during installation. ### Attack Path 1. An attacker gains the ability to create or modify `../skills/circle-wallet` in the user’s installation environment. 2. The attacker places malicious commands in that package’s lifecycle script. 3. The user follows the docu ...[truncated 768 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace the relative `file:` dependency with a reviewed, version-pinned package from a trusted registry. 2. Pin an exact version rather than using a floating range. 3. Require lockfile integrity hashes and provenance verification. 4. If the dependency must remain local, vendor its complete source into the audited repository and review its lifecycle script. 5. Remove installation lifecycle scripts unless they are strictly necessary. 6. Use `npm ci --ignore-scripts` where operationally possible, followed by an explicit reviewed build step. 7. Enforce dependency allowlists and software-composition analysis in CI. 8. Document the external dependency and its installation behavior so users can make an informed trust decision. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (139)

Known Vulnerable Dependency: handlebars==4.7.8 — 8 advisory(ies): CVE-2026-33916 (Handlebars.js has Prototype Pollution Leading to XSS through Partial Template In); CVE-2026-33937 (Handlebars.js has JavaScript Injection via AST Type Confusion); CVE-2026-33938 (Handlebars.js has JavaScript Injection via AST Type Confusion by tampering @part) +5 more

Critical
Category
Supply Chain
Confidence
90% confidence
Finding
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Credential Access

High
Category
Privilege Escalation
Content
**Solution:**
```bash
# Add API key to .env
echo "MOLTBOOK_API_KEY=your_key" >> .env

# Re-run command
Confidence
95% confidence
Finding
The instruction `echo "MOLTBOOK_API_KEY=your_key" >> .env` encourages entering a secret directly into the shell command line, which may be captured in shell history, terminal logs, clipboard tools, or CI output. Although the secret ends up in `.env`, the immediate entry method is unsafe and can leak credentials beyond the intended file.

Credential Access

High
Category
Privilege Escalation
Content
**Solution:**
```bash
# Add API key to .env
echo "MOLTBOOK_API_KEY=your_key" >> .env

# Re-run command
karmabank check youragentname
Confidence
95% confidence
Finding
This line is part of the same unsafe shell-based API key insertion workflow and exposes the same risk of credential leakage through shell history or command auditing. In an agent-oriented environment, commands may also be logged by orchestration systems, magnifying exposure.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The skill presents itself as a karma-based USDC lending product, but the findings indicate materially different behaviors including credential handling, Circle wallet bootstrap/configuration, secret generation, and other undeclared infrastructure actions. This mismatch is dangerous because users may provide high-value API credentials under a false mental model, enabling sensitive wallet or payment operations they did not knowingly authorize.

Static analysis

Detected: suspicious.env_credential_access, suspicious.exposed_secret_literal

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/circle-entity-secret.js:10

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/circle-entity-secret.ts:18

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
src/adapters/moltbook.ts:234

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
src/cli/adapters/moltbook.ts:76

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:107