Back to skill

Security audit

Local Wallet Standard

Security checks for vulnerabilities and agentic risk

Overview

This wallet skill has a clear purpose, but its install path and seed-phrase handling create risks users should review before installing.

Install only if you trust the upstream repository and are comfortable reviewing or pinning the installer yourself. Prefer a versioned release or audited commit with checksum/signature verification, and do not paste real seed phrases into command lines or shared terminals; use test wallets until the install and secret-handling path is independently verified.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
skill.md:26
Finding
Unverified Remote Installer Is Piped Directly into a Shell## Vulnerability Details **File Location**: `skill.md`, line 26 **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: High ### Vulnerable Code ```bash curl -fsSL https://raw.githubusercontent.com/dawnlabsai/lws/main/lws/install.sh | bash ``` ### Technical Analysis The installation command retrieves a shell script from the mutable `main` branch of an external GitHub repository and immediately executes it with `bash`. It provides no opportunity to inspect the downloaded content and performs no release-version pinning, cryptographic checksum verification, or signature validation. Consequently, the payload executed by users can differ from the content reviewed during this audit. Compromise of the upstream repository, maintainer account, branch, or hosting path—or a malicious future upstream change—would turn this documented installation flow into an arbitrary-code-execution channel. The documented installer operations include: 1. Installing Rust through `rustup` if necessary. 2. Cloning and compiling an external repository. 3. Writing an executable to `~/.lws/bin/lws`. 4. Editing shell configuration to add that directory to `PATH`. These operations introduce additional remote code and modify persistent user configuration. They exceed the minimum privileges needed merely to present or document the CLI's wallet operations. Although PATH modification is disclosed, the audited package contains only `skill.md`, so the actual installer and CLI implementations could not be validated. This risk is especially consequential because the CLI is intended to receive wallet mnemonic phrases and sign messages. A substituted installer or executable could capture those secrets or falsify signing behavior. ### Attack Path 1. An attacker compromises the upstream `dawnlabsai/lws` repository, a maintainer account, or another part of the remote delivery chain. 2. The attacker changes `lws/install.sh` on the mutable `main` branch to include malicious sh ...[truncated 1299 chars]
Remediation
## Remediation Suggestions 1. Remove the `curl ... | bash` installation pattern. 2. Publish versioned release artifacts rather than installing from a mutable branch. 3. Pin downloads to an immutable release or commit. 4. Publish cryptographic checksums and signed provenance for release artifacts. 5. Download the installer as a separate file, verify its checksum or signature, and allow inspection before execution. 6. Avoid automatically installing toolchains or modifying shell startup files unless the user gives explicit, informed approval. 7. Clearly enumerate every file and shell configuration entry the installer will create or modify. 8. Build in a constrained environment and audit or lock Rust dependencies before distribution. 9. For a wallet-signing utility, use reproducible builds where practical and document how users can verify that a distributed binary corresponds to reviewed source. 10. Prefer secure secret input mechanisms that do not expose mnemonic phrases through command-line arguments, although the local implementation was unavailable to determine whether alternatives already exist.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Chaining Abuse

High
Category
Tool Misuse
Content
One-liner:

```bash
curl -fsSL https://raw.githubusercontent.com/dawnlabsai/lws/main/lws/install.sh | bash
```

The installer will:
Confidence
98% confidence
Finding
Piping `curl` output directly into `bash` combines network retrieval with immediate execution, eliminating the user's opportunity to inspect the script before it runs. In a wallet-related tool that may later handle sensitive key material and modify PATH, this chaining significantly increases the risk of full host compromise through a malicious or tampered installer.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The installation instructions recommend executing a remotely fetched script with `bash` and do not warn users that this runs unreviewed code and modifies local shell configuration. This creates a direct code-execution path where a compromised GitHub account, repository, branch, or network trust boundary could result in arbitrary command execution on the user's machine.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill documents commands that accept raw mnemonic phrases directly on the command line for derivation and signing, but provides no warning that shell history, process listings, terminal logs, or copied commands may expose these secrets. In the context of a wallet-signing tool, this is especially dangerous because mnemonic compromise can lead to total loss of funds across supported chains.

External Script Fetching

Low
Category
Supply Chain
Content
One-liner:

```bash
curl -fsSL https://raw.githubusercontent.com/dawnlabsai/lws/main/lws/install.sh | bash
```

The installer will:
Confidence
94% confidence
Finding
The skill fetches an external installation script from a remote URL at runtime, which introduces a supply-chain trust dependency outside the skill file itself. While common in developer tooling, this is dangerous because the fetched content can change over time and may execute unexpected actions if the source is compromised.

Static analysis

No suspicious patterns detected.