Back to skill

Security audit

Nla Fulfill

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent for blockchain escrow fulfillment, but it asks users to run wallet-backed on-chain commands through an unpinned global CLI with weak validation and confirmation guidance.

Review this carefully before installing. Use a pinned and verified nla release, prefer an isolated environment and low-value wallet, avoid exposing unrelated secrets, validate all escrow and address values, and manually approve any command that spends gas, posts fulfillment text on-chain, or transfers tokens.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:42
Finding

Shell Command Injection Through Unvalidated Escrow Parameters

Content
View full analysis
``` ```bash nla escrow:fulfill \ --escrow-uid \ --fulfillment "" \ --oracle ``` ```bash nla escrow:collect \ --escrow-uid \ --fulfillment-uid ``` ### Technical Analysis The instructions direct the agent to interpolate user-provided or externally obtained values into Bash commands. These values include the escrow UID, fulfillment UID, fulfillment text, and oracle address. The document does not require strict validation of Ethereum addresses and UIDs or mandate a shell-safe argument-passing mechanism. In particular, placing fulfillment text within double quotes does not neutralize shell command substitution such as `$(...)` or backtick syntax. Unquoted identifier and address placeholders can additionally expose shell metacharacter, argument-injection, and word-splitting risks. The `Bash(nla:*)` tool restriction does not necessarily eliminate this issue when the permitted command begins with `nla` but the shell performs substitutions before invoking it. The actual exploitability depends on how the host agent constructs and executes the documented command. ### Attack Path 1. An attacker supplies a malicious escrow identifier, fulfillment identifier, oracle address, or fulfillment string to the user or agent. 2. The agent substitutes that value directly into one of the documented Bash command templates. 3. Bash parses the resulting command and evaluates embedded substitutions or metacharacters before executing `nla`. 4. The injected command runs with the privileges and environment of the agent process. 5. The attacker may read accessible environment variables or files, alter local data, or interf ...[truncated 1117 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
SKILL.md:7
Finding

Unpinned Global Installation of Wallet-Adjacent npm Dependency

Content
View full analysis
Remediation
View remediation
``` 2. Document the canonical package publisher, source repository, release tag, and expected integrity digest. 3. Verify the package's npm integrity metadata and compare the installed artifact with a trusted release before execution. 4. Prefer a project-local, lockfile-controlled installation over a global installation. Commit and review the lockfile so transitive dependency versions are fixed. 5. Disable npm lifecycle scripts during installation where compatible: ```bash npm install --ignore-scripts --save-exact nla@ ``` 6. Run the CLI with minimal privileges and a sanitized environment. Provide wallet credentials only for the shortest necessary period and avoid exposing unrelated secrets. 7. Use a low-value, task-specific wallet with transaction limits instead of a primary funded wallet. 8. Review updates before changing the pinned version, including the CLI source, bundled files, lifecycle scripts, and dependency-tree changes. ]]>
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