Back to skill

Security audit

Authenticate Wallet

Security checks for vulnerabilities and agentic risk

Overview

The skill’s wallet sign-in purpose is coherent, but it asks the agent to run a mutable npm package during authentication and permits direct inbox access for OTP retrieval without clear consent boundaries.

Review this carefully before installing. Only use it in a tightly sandboxed agent environment, avoid granting the agent mailbox access, provide OTP codes manually, and prefer a version-pinned, reviewed wallet CLI rather than executing `awal@latest` at runtime.

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

Error
Location
SKILL.md:6
Finding
Runtime Execution of an Unpinned npm Package<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, line 6; vulnerable commands are also documented at lines 14, 24-30, 36-50, and 58-78 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: High ### Vulnerable Code ```yaml allowed-tools: ["Bash(npx awal@latest status*)", "Bash(npx awal@latest auth *)", "Bash(npx awal@latest balance*)", "Bash(npx awal@latest address*)", "Bash(npx awal@latest show*)"] ``` Examples of the permitted runtime execution documented in `SKILL.md` include: ```bash npx awal@latest auth login <email> npx awal@latest auth verify <flowId> <otp> npx awal@latest status ``` ### Technical Analysis The skill authorizes and repeatedly instructs the Agent to execute `awal@latest` through `npx`. The npm `latest` distribution tag is mutable and does not identify a fixed, previously reviewed package version. Depending on the local npm environment, `npx` can retrieve the package and execute its entry point at runtime. Consequently, the code that ultimately runs can change after the skill has been audited. The skill provides no package-version pin, lockfile, integrity hash, provenance check, or controlled installation process. This is particularly sensitive because the package is used for wallet authentication and receives email addresses, authentication flow IDs, and one-time passwords. This finding does not establish that the current `awal` package is malicious. The vulnerability is the trust placed in mutable third-party code at execution time, which creates a supply-chain attack path if the package, publisher account, npm distribution channel, or mutable tag is compromised. ### Attack Path 1. An attacker compromises the `awal` package publisher, publishing workflow, or another component capable of updating the npm `latest` tag. 2. The attacker publishes a malicious release and causes `awal@latest` to resolve to that release. 3. A user or Agent invokes the authentication skill. 4. The skill executes a command su ...[truncated 1231 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace `awal@latest` with an exact, reviewed version, for example: ```bash npx --no-install awal status ``` Install the exact version separately through a controlled deployment process: ```bash npm install --save-exact awal@<reviewed-version> ``` 2. Commit and enforce a lockfile so that both direct and transitive dependency versions remain reproducible. 3. Verify npm package integrity and provenance during installation. Restrict installation to an approved registry and validate package signatures or trusted publishing provenance where supported. 4. Avoid downloading executable dependencies during wallet authentication. Preinstall the reviewed CLI in a hardened build or deployment stage, then use `npx --no-install` or a fixed local executable path at runtime. 5. Review every dependency update before deployment. Use automated dependency scanning, package allowlists, and change-control approval for updates affecting authentication or wallet operations. 6. Run the wallet CLI in a least-privilege sandbox with restricted filesystem, environment-variable, subprocess, and network access. 7. Minimize exposure of authentication secrets. Prefer having the user provide the OTP explicitly rather than granting mailbox access, avoid logging OTPs or flow IDs, and clear sensitive values immediately after verification. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (23)

Missing User Warnings

High
Confidence
98% confidence
Finding
The instruction to read OTPs from the user's email lacks an explicit consent gate even though it involves access to highly private communications. In practice, granting an agent inbox access can expose account-recovery links, financial records, and unrelated personal messages, so the absence of a strong warning and least-privilege boundary materially increases privacy and account-takeover risk.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
MCP server references in the skill manifest without version pinning are a rug-pull risk.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The skill explicitly authorizes the agent to access the user's email to retrieve OTPs, which expands the agent's reach into a much broader and highly sensitive data source than is necessary for wallet authentication. Because email accounts often contain financial, personal, and account-recovery data, this instruction creates an unnecessary privacy and security boundary crossing that could expose unrelated secrets.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill discusses accessing private email content and wallet status data without a clear warning about the privacy implications or an explicit consent requirement. In an authentication context, this is more dangerous because users may feel pressured to allow broad access to complete a prerequisite action, leading to uninformed disclosure of sensitive inbox and wallet information.

Context-Inappropriate Capability

Medium
Confidence
97% confidence
Finding
This line repeats and normalizes direct email access for OTP retrieval, reinforcing an unjustified capability beyond the wallet-authentication purpose. Repetition makes misuse more likely by signaling that inbox access is expected behavior, increasing the chance of overcollection of sensitive user data.

Static analysis

No suspicious patterns detected.