Back to skill

Security audit

ClankerKit

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed wallet-automation tool, but it gives an agent broad live authority to move funds and call arbitrary contracts with limited built-in guardrails.

Install only for low-value or test wallets unless you are prepared to grant the agent live signing authority. Configure strict on-chain policies and allowlists first, avoid high-value private keys in environment variables, review every recipient/contract/calldata before use, and update dependencies before production use.

Vulnerability Patterns
  • 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
  • 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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
src/index.ts:65
Finding

Ambiguous Amount Parsing Can Cause Transfers Far Larger Than Requested

Content
View full analysis
{ let decimals = TOKEN_DECIMALS[token.toUpperCase()]; // For contract addresses not in TOKEN_DECIMALS, try on-chain lookup if (decimals === undefined && kit && token.startsWith('0x') && token.length === 42) { decimals = await kit.fetchTokenDecimals(token); } decimals = decimals ?? 18; // Contains a decimal point => definitely human-readable if (amount.includes('.')) { return parseUnits(amount, decimals); } // Pure integer: if it's very large (>10 digits), assume it's already in wei. // This handles backward compatibility for callers passing raw wei. if (/^\d+$/.test(amount) && amount.length > 10) { return BigInt(amount); } // Short integer like "1", "100" => treat as human-readable return parseUnits(amount, decimals); } ``` The runtime manifest describes affected parameters as raw units, for example: ```json "amount": { "type": "string", "description": "Amount in wei" } ``` The parser is used by asset-moving operations such as: ```typescript async send_tokens({ to, amount }: { to: string; amount: string }) { const kit = getClankerKit(); const amountWei = await parseHumanAmount(amount, 'MON', kit); const result = await kit.send(to as Address, amountWei); ``` ### Technical Analysis The public interface and implementation assign different meanings to integer amount strings. The manifest instructs an Agent to supply wei or the token's smallest unit, while `parseHumanAmount` treats any integer containing ten or fewer digits as a human-readable whole-token amount. For an asset with 18 decimals, the manifest-compatible input ` ...[truncated 2074 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
src/index.ts:348
Finding

Caller-Controlled Payment Endpoint Enables Unrestricted Outbound Requests

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
Findings (31)

Known Vulnerable Dependency: elliptic==6.5.4 — 7 advisory(ies): CVE-2024-48949 (Elliptic's verify function omits uniqueness validation); CVE-2024-42461 (Elliptic allows BER-encoded signatures); CVE-2025-14505 (Elliptic Uses a Cryptographic Primitive with a Risky Implementation) +4 more

Critical
Category
Supply Chain
Confidence
97% confidence
Finding

The lockfile contains elliptic 6.5.4 through ethers 5.6.2, and the listed advisories affect signature validation and cryptographic robustness. For a skill performing autonomous wallet operations, cryptographic verification flaws are especially serious because malformed or non-unique signatures can undermine transaction validation, authentication, or protocol assumptions around signed messages.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ws==8.17.1 — 2 advisory(ies): CVE-2026-45736 (ws: Uninitialized memory disclosure); CVE-2026-48779 (ws: Memory exhaustion DoS from tiny fragments and data chunks)

High
Category
Supply Chain
Confidence
93% confidence
Finding

The lockfile includes ws 8.17.1 under @x402/extensions, and the cited advisories indicate remotely triggerable memory disclosure and resource-exhaustion conditions in WebSocket handling. In a wallet-automation skill that may maintain network connections to blockchain infrastructure or external services, a vulnerable WebSocket library increases exposure to denial of service and potentially sensitive process-memory leakage.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: fast-uri==3.1.0 — 7 advisory(ies): CVE-2026-13676 (fast-uri vulnerable to host confusion via failed IDN canonicalization); CVE-2026-18446 (fast-uri vulnerable to host confusion via backslash authority introducer); CVE-2026-75975 (fast-uri vulnerable to server-side request forgery via malformed IPv6 normalizat) +4 more

High
Category
Supply Chain
Confidence
89% confidence
Finding

fast-uri 3.1.0 is present via ajv, and the advisories describe host confusion and malformed URL parsing issues that can enable SSRF or validation bypasses when attacker-controlled URLs are processed. This matters if the skill or its dependencies validate remote endpoints, callback URLs, or service locations, though the lockfile alone does not prove direct exposure in runtime paths.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ws==8.18.3 — 2 advisory(ies): CVE-2026-45736 (ws: Uninitialized memory disclosure); CVE-2026-48779 (ws: Memory exhaustion DoS from tiny fragments and data chunks)

High
Category
Supply Chain
Confidence
94% confidence
Finding

The lockfile includes ws 8.18.3 via viem, and the cited advisories indicate information disclosure and memory exhaustion conditions in WebSocket processing. Because viem is commonly used for blockchain RPC subscriptions and real-time connections, a wallet-focused skill may realistically exercise this code path, making remote service interaction a meaningful attack surface.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ws==7.4.6 — 2 advisory(ies): CVE-2024-37890 (ws affected by a DoS when handling a request with many HTTP headers); CVE-2026-48779 (ws: Memory exhaustion DoS from tiny fragments and data chunks)

High
Category
Supply Chain
Confidence
95% confidence
Finding

ws 7.4.6 is present via ethers providers and is affected by denial-of-service issues from abusive handshake headers and fragmented frames. In an autonomous wallet skill, service disruption can block transaction monitoring, signing workflows, or policy enforcement, and the networking role of blockchain clients makes the vulnerable component relevant rather than purely dormant.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

This skill exposes many irreversible financial actions—sending tokens, staking, swapping, deploying wallets, and changing spending policies—without any user-facing warnings about loss of funds, slippage, approvals, or permanent on-chain effects. In a wallet-control skill, lack of explicit risk framing materially increases the chance of unsafe autonomous execution or prompt-induced misuse.

Content

No source excerpt is available for this finding.

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · skill.json (reported line 5)May include surrounding context.

json
{
  "$schema": "https://raw.githubusercontent.com/OpenClaw/skills/main/schema.json",
  "name": "clankerkit",
  "version": "0.2.0",
  "description": "ClankerKit — Autonomous wallet operations for AI agents on Monad — swap, stake, deploy, trade memecoins, and manage spending policies",
  "author": "ClankerKit Team",
  "tools": [
    {
      "name": "get_wallet_info",
      "description": "Get current wallet information including balance and policy state",
      "parameters": {
        "type": "object",
        "properties": {},
        "required": []
      }
    },
    {
      "name": "get_token_balance",
      "description": "Get the ERC20 token balance of the agent wallet",
      "parameters": {
        "type": "object"

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The execute_transaction tool allows arbitrary target/value/data submission to any smart contract, effectively giving the agent a generic transaction primitive. In this context, that can be used to approve token drains, call malicious contracts, bypass intended higher-level safeguards, or permanently move assets through unreviewed calldata.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

These tools send assets and execute transactions immediately, but the file shows no confirmation, warning, or explicit approval flow before irreversible on-chain actions occur. In an autonomous agent context, this materially increases the risk of accidental transfers, prompt-induced abuse, or acting on hallucinated instructions.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The execute_transaction tool allows arbitrary target, value, and calldata execution from the wallet, which is materially broader than the stated swap/stake/wallet-management purpose. In an agent setting, this becomes a generic signing primitive that can call any contract, approve token drains, or interact with malicious targets.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Arbitrary contract execution is not justified by the advertised operational scope and creates a universal escape hatch around higher-level safety assumptions. A compromised prompt, malicious user, or faulty agent plan could use this one function to perform any on-chain action available to the wallet.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The swap tools obtain quotes and then execute live trades without a visible consent barrier or strong user-facing disclosure that funds will be exchanged irreversibly. Given price movement, slippage, and route risk, an agent can cause immediate financial loss if it misinterprets intent or is manipulated.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
94% confidence
Finding

Staking, unstaking, reward compounding, policy creation, and limit updates all mutate on-chain state yet lack visible confirmation or warning mechanisms in this code. Because these operations can lock funds, change spending controls, or affect custody behavior, silent execution is dangerous in an agent-driven environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The deployment helpers use a private key from environment variables to deploy contracts and wallets immediately, with no visible user warning or confirmation. This combines sensitive key-based authority with irreversible administrative actions, which is especially risky when callable by an AI agent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README tells users to export an agent private key directly into an environment variable but does not warn that this credential grants direct control over blockchain funds and may be exposed through shell history, process inspection, logs, crash reports, or misconfigured deployment environments. In the context of an autonomous wallet skill that can swap, stake, trade, and manage spending policies, compromise of this key could enable unauthorized transactions and loss of assets.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill exposes highly sensitive capabilities through environment variables, including a private key, but does not declare an explicit tool scope such as permissions or allowed-tools. In a wallet-management skill that can move funds, trade, and execute arbitrary transactions, this lack of scope increases the chance of unintended tool access and weakens least-privilege controls.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The environment variable section documents use of AGENT_PRIVATE_KEY and describes powerful financial operations, but it does not prominently warn users about irreversible fund loss, secret-handling risks, or the dangers of granting an AI autonomous signing authority. In this context, missing warnings materially increase the likelihood of unsafe deployment and operator misconfiguration.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
92% confidence
Finding

The ensure_gas feature makes an autonomous spending decision by automatically transferring MON from the wallet contract to the agent EOA when a threshold is crossed. Although the intended purpose is operational continuity, any automatic value transfer in an agent-controlled wallet expands the attack surface for draining funds through repeated triggering, bad thresholds, or agent misuse.

Content

Scanner excerpt · SKILL.md (reported line 68)May include surrounding context.

md
- **data**: Encoded calldata (hex)

#### `ensure_gas`
Ensure the agent EOA has enough MON for gas fees. If the EOA balance is below the minimum threshold, automatically sends MON from the AgentWallet contract to the EOA. Users only need to fund the wallet contract — the agent tops up its own gas from there.
- **minBalance**: Minimum acceptable EOA balance in MON (human-readable, default "0.01")
- **topUpAmount**: Amount of MON to send to EOA if below minimum (human-readable, default "0.05")

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
87% confidence
Finding

The smart_trade tool supports autoExecute for autonomous trading strategies, allowing the agent to move funds based on strategy parameters without a separate confirmation step. In a memecoin-trading context with volatile assets, this can rapidly cause real financial loss if prompts are manipulated, strategy logic is flawed, or market conditions shift unexpectedly.

Content

Scanner excerpt · SKILL.md (reported line 183)May include surrounding context.

md
- **takeProfit**: Take-profit fraction (default: 0.3 = +30%)
- **dcaIntervals**: Number of DCA buys (default: 5)
- **momentumThreshold**: Min 24h change for momentum (default: 0.05)
- **autoExecute**: Execute trades or dry-run (default: false)

### Cross-Chain Swaps

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest description limits the skill's scope to 'wallet operations for AI agents on Monad,' which implies chain-specific functionality. However, the declared tools include kyber_swap and zerox_swap for Ethereum, Polygon, Arbitrum, Optimism, Base, BSC, and Avalanche, materially expanding behavior beyond Monad.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest advertises broad autonomous financial operations without clear invocation guardrails, approval expectations, or examples of disallowed use. In an agent ecosystem, vague high-authority tool descriptions can encourage overbroad or unsafe invocation, especially for fund-moving actions.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

The smart_trade tool supports autoExecute, enabling the agent to convert a trading strategy evaluation directly into live trades. In a volatile memecoin-trading context, autonomous execution without strong confirmation and risk controls can quickly cause financial loss from prompt injection, bad data, or strategy misuse.

Content

Scanner excerpt · skill.json (reported line 612)May include surrounding context.

json
"description": "For momentum strategy: minimum 24h price change fraction (0.05 = +5%)",
            "default": 0.05
          },
          "autoExecute": {
            "type": "boolean",
            "description": "If true, actually place the order. If false (default), dry-run only.",
            "default": false

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The ensure_gas tool automatically transfers MON from the wallet contract to the agent EOA when a threshold is met, but the description does not clearly warn that this moves funds automatically. In a delegated-agent setting, even small automatic top-ups can be abused repeatedly or normalize silent fund movement without informed consent.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Automatic gas top-ups are a form of autonomous fund movement based on local conditions rather than explicit per-transfer user authorization. In a wallet skill, this increases the blast radius of prompt mistakes or repeated invocation loops because the agent can keep provisioning its own ability to transact.

Content

Scanner excerpt · skill.json (reported line 665)May include surrounding context.

json
},
    {
      "name": "ensure_gas",
      "description": "Ensure the agent EOA has enough MON for gas fees. If the EOA balance is below the minimum threshold, automatically sends MON from the AgentWallet contract to the EOA. Call this before executing transactions if unsure whether the agent has gas. Users only need to fund the wallet contract address — the agent tops up its own gas from there.",
      "parameters": {
        "type": "object",
        "properties": {

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill metadata frames the capability as Monad wallet operations, but the code also exposes cross-chain swaps through Kyber and 0x on external chains. That mismatch can mislead operators and downstream policy systems about the real transaction surface, increasing the chance of unsafe invocation or insufficient review.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.