Back to skill

Security audit

Anvil Mesh

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent and not malicious, but it guides agents toward real BSV payment flows over under-protected endpoints without enough user confirmation or verification safeguards.

Review before installing. Do not allow an agent to create or broadcast BSV transactions automatically from this skill. Use explicit approval, spending limits, recipient and amount verification, and prefer authenticated HTTPS endpoints before relying on returned prices, payment addresses, or proofs.

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:60
Finding

Plaintext HTTP Used for Cryptocurrency Data and Payment Operations

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 60–61 and 80–81
Vulnerability Type: Unencrypted network communication
Risk Level: High

Vulnerable Code

markdown
## Live Nodes

- `http://212.56.43.191:9333` — anvil-prime
- `http://212.56.43.191:9334` — anvil-one
bash
curl -s "http://212.56.43.191:9333/data?topic=oracle:rates:bsv&limit=1" | jq '.envelopes[0].payload | fromjson | .USD'

Technical Analysis

The documented live nodes and example request use plaintext HTTP. HTTP provides neither transport encryption nor server authentication. An attacker with a suitable network position can observe or modify responses and requests without detection at the transport layer.

This is particularly significant because the Skill describes retrieving financial oracle data, transaction verification material, HTTP 402 pricing, payment addresses, and submitting payment proofs. Although the service may return signed envelopes or SPV material, the Skill does not instruct the user or agent to authenticate all security-sensitive fields before acting on them. In particular, an HTTP 402 payment address or endpoint pricing could be replaced in transit.

Using a bare IP address over HTTP also provides no certificate-bound identity for the advertised node.

Attack Path

  1. A user or agent follows the Skill and connects to one of the advertised HTTP nodes.
  2. An attacker gains a network interception position, such as through a compromised router, malicious access point, ISP-level interception, or local network poisoning.
  3. The attacker intercepts the plaintext HTTP request or response.
  4. The attacker replaces oracle data, endpoint pricing, a payment address, transaction-verification material, or another service response.
  5. The user or agent accepts the modified response because HTTP provides no server authentication or integrity protection.
  6. The victim may send funds to an attacker-co ...[truncated 780 chars]
Remediation
View remediation

Remediation Suggestions

  • Remove plaintext HTTP endpoints from the Skill documentation.
  • Require HTTPS for every discovery, data, transaction-verification, and payment endpoint.
  • Use domain names with valid certificates rather than unauthenticated bare-IP HTTP services.
  • Preserve certificate verification in curl; do not recommend --insecure or equivalent options.
  • Authenticate the node manifest and all security-sensitive response fields at the application layer.
  • Cryptographically verify signed data envelopes, including the publisher key, signature, timestamp, topic, and expiration time, before using their contents.
  • Validate SPV proofs independently against trusted and synchronized block headers.
  • Bind HTTP 402 payment information to an authenticated service identity and verify the amount, destination address, network, endpoint, and request context before signing.
  • Require explicit user confirmation before creating or broadcasting any payment transaction.
  • Design payment proofs as endpoint-bound, request-bound, short-lived, and non-replayable.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:88
Finding

Unpinned Third-Party npm Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 88–89
Vulnerability Type: Unpinned third-party dependency
Risk Level: Medium

Vulnerable Code

markdown
## Links

- [GitHub](https://github.com/BSVanon/Anvil)
- [SDK](https://www.npmjs.com/package/anvil-mesh) — `npm install anvil-mesh`
- [@SendBSV](https://x.com/SendBSV)

Technical Analysis

The documented installation command does not pin an exact version or integrity value. Running npm install anvil-mesh resolves a package version from the registry at installation time, so the installed code can differ from the version originally reviewed.

npm packages may contain executable lifecycle scripts, such as preinstall, install, or postinstall, and application code executes with the privileges of the user running Node.js. If the package publisher account, registry distribution channel, or a future release is compromised, following this instruction could install and execute attacker-controlled code.

The audit found no evidence that the currently published package is malicious. The vulnerability is the unsafe, mutable dependency acquisition instruction rather than a confirmed malicious package release.

Attack Path

  1. An attacker compromises the package publisher account, release process, or another relevant supply-chain component.
  2. The attacker publishes a malicious version under the existing anvil-mesh package name.
  3. The malicious release becomes the version selected by the unpinned installation command.
  4. A user follows the Skill and runs npm install anvil-mesh.
  5. npm downloads the attacker-controlled package.
  6. Malicious lifecycle scripts may execute during installation, or malicious runtime code executes when the SDK is imported.
  7. The payload gains the permissions of the account running npm or the consuming application.

Impact Assessment

Successful exploitation can provide arbitrary code execution wi ...[truncated 668 chars]

Remediation
View remediation

Remediation Suggestions

  • Replace the floating installation command with a reviewed, exact version, such as npm install --save-exact anvil-mesh@<reviewed-version>.
  • Commit and enforce a lockfile containing registry-resolved integrity hashes.
  • Use npm ci in automated environments so installation fails when the lockfile and manifest differ.
  • Review the package contents, maintainers, provenance, lifecycle scripts, and transitive dependencies before approving a version.
  • Disable lifecycle scripts with --ignore-scripts where they are not required.
  • Use npm provenance or equivalent signed-release verification when available.
  • Perform dependency and lockfile scanning in CI.
  • Run dependency installation and application execution with least privilege and without unnecessary wallet secrets or credentials in the environment.
  • Upgrade only through an explicit review process rather than automatically accepting the latest release.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (1)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly instructs users to interact with HTTP 402 micropayment endpoints and to create and submit a BSV transaction, but it does not clearly warn that following these steps can spend real funds. In an agent-skill context, this is dangerous because users or higher-level agents may treat the workflow as a routine data-fetch operation and unintentionally trigger on-chain payments to untrusted services.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.