Back to skill

Security audit

Cardano Identity

Security checks for vulnerabilities and agentic risk

Overview

This skill appears aimed at ADAHandle lookup, but it asks users to expose a full Cardano wallet seed phrase for read-only identity queries.

Review carefully before installing. Do not provide a wallet recovery phrase to this skill unless you fully trust the external MCP package and understand that exposure of the phrase can compromise the wallet. Prefer a version that uses a public address, stake address, or another read-only credential and pins the MCP dependency to a reviewed version.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:12
Finding
Unpinned Third-Party Node.js Dependency<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:12-14` **Vulnerability Type**: Unpinned executable dependency and supply-chain exposure **Risk Level**: Medium ### Vulnerable Code ```yaml install: - kind: node package: "@indigoprotocol/cardano-mcp" ``` ### Technical Analysis The installation configuration references `@indigoprotocol/cardano-mcp` without an exact version or integrity hash. Consequently, installation may resolve to a mutable package release that was not part of this audit. The dependency's implementation is not included in the audited project, so its installation scripts, runtime behavior, transitive dependencies, and handling of wallet secrets could not be verified. There is no evidence in the reviewed files that the current package is malicious; the vulnerability is the absence of controls that ensure future installations use the exact version that was reviewed and approved. ### Attack Path 1. An attacker compromises the package publisher account, registry distribution channel, or a future package release. 2. The attacker publishes a malicious version under the same package name. 3. A user installs or activates the skill without an exact dependency version. 4. The package manager resolves the mutable dependency to the malicious release. 5. Malicious installation or runtime code executes with the privileges of the user running the skill. 6. If the process can access the configured `SEED_PHRASE`, the malicious code may read and transmit that credential or perform unauthorized wallet operations. ### Impact Assessment Successful exploitation could permit arbitrary code execution under the installing or runtime user's account. The reachable scope may include environment variables, wallet credentials, accessible files, network resources, and any wallet operations authorized to the MCP server. The wallet impact could be severe if the seed phrase is exposed, although exploitation requires compromise or malicious modifica ...[truncated 36 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Pin `@indigoprotocol/cardano-mcp` to a reviewed, exact version rather than using an unconstrained package reference. - Commit and enforce a lockfile for all transitive dependencies where the installation framework supports it. - Verify package provenance, registry signatures, and integrity hashes before installation. - Review installation lifecycle scripts and disable them when they are unnecessary. - Run the MCP server in a sandbox with restricted filesystem, environment, process, and network access. - Establish an update-review process so dependency upgrades require security review and explicit approval. - Avoid exposing wallet recovery credentials to the dependency, as addressed in the separate least-privilege finding. ]]>

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:9
Finding
Full Wallet Seed Phrase Required for Read-Only Identity Operations<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:9-11` **Vulnerability Type**: Excessive credential requirement and violation of least privilege **Risk Level**: High ### Vulnerable Code ```yaml openclaw: emoji: "🪪" requires: env: [SEED_PHRASE] ``` ### Technical Analysis The skill declares a full wallet recovery seed phrase as a required environment variable even though its documented purpose is limited to listing ADAHandles and resolving human-readable wallet identifiers. A seed phrase grants control far beyond the read-only capability needed for these operations and can generally be used to reconstruct the wallet and authorize asset transfers. Supplying this credential through a process environment also expands its exposure to the external MCP process and potentially to child processes, diagnostic tooling, crash reports, or other software running with sufficient access. The audited files contain no direct credential-exfiltration logic, but requiring such a powerful secret creates an unnecessary high-impact trust boundary around the unaudited external dependency. ### Attack Path 1. The user configures `SEED_PHRASE` because the skill declares it as a prerequisite. 2. The MCP server or another process operating within the same environment gains access to the variable. 3. An attacker compromises the MCP dependency, its runtime, the host account, or an authorized diagnostic mechanism. 4. The attacker reads the seed phrase from the process environment or related runtime state. 5. The attacker reconstructs the wallet independently on another system. 6. The attacker signs unauthorized transactions and transfers assets controlled by the recovered wallet. ### Impact Assessment Exposure of the seed phrase may provide complete and persistent control over every wallet key derived from it. Potential impact includes unauthorized transaction signing, transfer or theft of wallet assets, disclosure of wallet activity, impersonation of the wall ...[truncated 222 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Remove `SEED_PHRASE` from the skill's required environment variables. - Perform ADAHandle discovery using a public Cardano address, public key, stake address, or another read-only blockchain query mechanism. - If wallet interaction is necessary, use a narrowly scoped wallet API that does not reveal private keys or recovery material. - Prefer hardware-wallet mediation for any operation that genuinely requires signing, with explicit user confirmation for each transaction. - Never transmit or persist recovery phrases in process environment variables, logs, configuration files, prompts, or diagnostic output. - Isolate the MCP server with least-privilege permissions and ensure it cannot access unrelated credentials. - Document the precise minimum credential required by each operation and reject configurations that expose a recovery phrase for read-only requests. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep

Static analysis

No suspicious patterns detected.