Back to skill

Security audit

Debank Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its DeBank wallet-query purpose, but it uses a global unpinned CLI install and external financial lookups without enough user-control and privacy safeguards.

Review before installing. Use a pinned, locally installed debank-cli version if possible, avoid sudo or administrator installation, and treat wallet addresses, ENS names, transaction history, approvals, and portfolio queries as financial metadata that will be sent to DeBank. Use a dedicated DeBank API key and remove it with debank config remove-key when no longer needed.

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
SKILL.md:20
Finding
Unpinned Third-Party CLI Installed Globally<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:20-24`; duplicated in `README.md:20-24` **Vulnerability Type**: Unpinned and globally installed third-party dependency **Risk Level**: Medium ### Vulnerable Code `SKILL.md:20-24`: ```markdown If NOT_INSTALLED, install it: ```bash npm install -g debank-cli ``` ``` `README.md:20-24`: ```markdown ### 1. Install the CLI ```bash npm install -g debank-cli ``` ``` ### Technical Analysis The project instructs users or the agent to install `debank-cli` globally without specifying an exact version, package integrity hash, or other immutable verification information. Consequently, the package contents installed during each invocation depend on the version currently resolved by the npm registry rather than the version reviewed when this skill was audited. An npm installation may execute package lifecycle scripts under the permissions of the invoking user. The global installation flag also places package files and executable entry points into shared user-level or system-level npm locations. The audited project does not include the CLI source, a lockfile, a checksum, or a mechanism proving that the npm artifact corresponds to the linked source repository. This does not establish that the current `debank-cli` package is malicious. It creates a supply-chain exposure in which compromise of the package publisher, npm account, registry distribution path, or a future release could introduce attacker-controlled code. ### Attack Path 1. An attacker compromises the npm publisher account, package release process, or another component of the `debank-cli` distribution chain. 2. The attacker publishes a malicious version under the same package name. 3. A user or agent follows the documented prerequisite and runs `npm install -g debank-cli`. 4. npm resolves the mutable package reference to the attacker-controlled release. 5. Malicious lifecycle scripts can execute during installation, or the installed `debank` ex ...[truncated 1069 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `debank-cli` to an exact, reviewed version rather than allowing npm to resolve the latest release: ```bash npm install --global --ignore-scripts debank-cli@X.Y.Z ``` 2. Confirm whether the package requires lifecycle scripts before using `--ignore-scripts`. If scripts are required, audit those scripts and their transitive dependencies before permitting execution. 3. Publish and document the expected npm publisher identity, exact package version, and registry integrity digest. Verify the downloaded artifact against an independently maintained checksum. 4. Prefer a project-local dependency over a global installation so dependency state is isolated and reproducible: ```bash npm install --save-exact debank-cli@X.Y.Z ``` 5. Commit an appropriate lockfile when using a local dependency, and use reproducible installation commands such as `npm ci`. 6. Execute the CLI under a least-privileged account and avoid installing it with `sudo` or administrator permissions. 7. Restrict the runtime environment so the CLI can access only the DeBank credential and resources necessary for wallet queries. 8. Update both `SKILL.md` and `README.md` so their installation guidance remains consistent and does not reintroduce an unpinned global installation. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The README advertises querying wallet balances, DeFi positions, NFTs, transaction history, and approvals through the DeBank API but does not disclose that wallet addresses, ENS names, and related identifiers are transmitted to a third-party service. This omission can lead users to unknowingly expose sensitive financial metadata and activity patterns, even if the queried data is technically public on-chain.

Skill Enumeration

Medium
Category
Agent Snooping
Content
**Per-project** (add to your repo):

```bash
mkdir -p .claude/skills/debank
curl -o .claude/skills/debank/SKILL.md https://raw.githubusercontent.com/lolieatapple/debank-skill/main/SKILL.md
```
Confidence
85% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Session Persistence

Medium
Category
Rogue Agent
Content
**Per-project** (add to your repo):

```bash
mkdir -p .claude/skills/debank
curl -o .claude/skills/debank/SKILL.md https://raw.githubusercontent.com/lolieatapple/debank-skill/main/SKILL.md
```
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
mkdir -p .claude/skills/debank
curl -o .claude/skills/debank/SKILL.md https://raw.githubusercontent.com/lolieatapple/debank-skill/main/SKILL.md
```

**Global** (available in all projects):
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
mkdir -p .claude/skills/debank
curl -o .claude/skills/debank/SKILL.md https://raw.githubusercontent.com/lolieatapple/debank-skill/main/SKILL.md
```

**Global** (available in all projects):
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
mkdir -p .claude/skills/debank
curl -o .claude/skills/debank/SKILL.md https://raw.githubusercontent.com/lolieatapple/debank-skill/main/SKILL.md
```

**Global** (available in all projects):
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
mkdir -p .claude/skills/debank
curl -o .claude/skills/debank/SKILL.md https://raw.githubusercontent.com/lolieatapple/debank-skill/main/SKILL.md
```

**Global** (available in all projects):
Confidence
80% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Skill Enumeration

Medium
Category
Agent Snooping
Content
**Global** (available in all projects):

```bash
mkdir -p ~/.claude/skills/debank
curl -o ~/.claude/skills/debank/SKILL.md https://raw.githubusercontent.com/lolieatapple/debank-skill/main/SKILL.md
```
Confidence
85% confidence
Finding
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The README says users can invoke the skill with the slash command or 'just ask naturally,' which makes activation criteria ambiguous. In an agent setting, broad natural-language triggering can cause the skill to run on ordinary wallet-related prompts unexpectedly and send wallet identifiers or related queries to the external API without the user clearly intending that tool use.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The skill advertises very broad natural-language triggers such as wallet balances, portfolio, token prices, NFTs, transaction history, and gas prices across any EVM chain. This increases the chance the agent invokes the skill on loosely related user requests, causing unintended transmission of wallet addresses and query data to the external DeBank service and potentially exposing sensitive financial context without explicit user intent.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill sends wallet addresses, holdings, approvals, transaction history, and related financial data to the external DeBank API but does not warn the user that this information will leave the local environment. Because blockchain addresses can be linked to identity and reveal detailed financial activity, the lack of disclosure undermines informed consent and can create privacy and compliance risks.

Static analysis

No suspicious patterns detected.