Back to skill

Security audit

NEXUS Trust Score

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed paid remote API integration, but it can direct agents to make cryptocurrency payments based on server-provided terms without clear local limits or fresh user approval.

Install only if you trust NEXUS and your OpenClaw environment enforces wallet/payment controls. Use sandbox_test where possible, require explicit confirmation for every non-sandbox payment, verify recipient, asset, network, and total amount, and cap payments to the advertised $0.75 plus clearly understood fees.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:51
Finding

Remote Payment Requirements Are Trusted Without Local Authorization Controls

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 51-65
Vulnerability Type: Unvalidated remote payment authorization
Risk Level: High

Vulnerable Instructions:

markdown
3. Select a `paymentRequirement` from `accepts[]` matching your preferred network + asset.
4. Networks: `cardano:mainnet` (ADA, DJED, iUSD, USDCx, USDM), `stellar:pubnet` (USDC, XLM), `sandbox` (free).
5. Send payment to the `payTo` address for `maxAmountRequired` in the specified asset.
6. **Stellar fee sponsorship:** POST your signed XDR to `https://ai-service-hub-15.emergent.host/api/mpp/stellar/sponsor` — NEXUS pays gas, you need 0 XLM.
7. Retry with `X-PAYMENT: <base64url JSON {x402Version:1, scheme:"exact", network, payload:{tx_hash, currency}}>` header.
8. Parse the JSON response and `X-PAYMENT-RESPONSE` header.

### Option B: MPP Standard

1. Call the service endpoint without payment headers.
2. Receive HTTP 402 with `WWW-Authenticate: Payment` header listing all accepted currencies and amounts.
3. Pick your preferred chain + currency: Cardano (ADA, stablecoins) or Stellar (USDC, XLM).
4. Create payment: Masumi escrow (Cardano) or direct Stellar transfer.
5. **Stellar fee sponsorship:** POST your signed XDR to `https://ai-service-hub-15.emergent.host/api/mpp/stellar/sponsor` — NEXUS pays gas, you need 0 XLM.

Technical Analysis

The skill instructs an agent to derive the payment recipient and amount from a remotely supplied HTTP 402 challenge and then issue a cryptocurrency payment. The remote payTo and maxAmountRequired values are not subject to documented local validation.

Although the skill advertises a price of $0.75/request, it does not require the agent to verify that the challenge corresponds to that price. It also does not establish:

  • A locally enforced maximum payment amount.
  • An allowlist or pinned recipient address.
  • Explicit user approval immediately before signing or broadcast ...[truncated 2309 chars]
Remediation
View remediation

Remediation Suggestions

  1. Require explicit, transaction-specific user confirmation immediately before signing or broadcasting any non-sandbox payment. Display the recipient, network, asset, exact fiat-equivalent value, fees, and total amount.
  2. Enforce a local hard ceiling matching the advertised $0.75 price, with an explicitly documented tolerance for conversion and network fees. Reject challenges exceeding that ceiling rather than relying on the server-provided maxAmountRequired.
  3. Pin or locally allowlist expected recipient addresses for every supported network and asset. Treat any remote recipient change as an error requiring out-of-band verification.
  4. Validate the complete payment challenge, including network, asset identifier, amount, recipient address format, expiration time, service identity, and cryptographic signature.
  5. Bind each payment challenge to the originating request using a nonce, request digest, service identifier, and short expiration period. Persist transaction identifiers sufficiently to reject replay attempts.
  6. Apply wallet-level policies such as per-transaction limits, daily limits, recipient allowlists, and denial of unattended transfers.
  7. For Stellar sponsorship, decode and present the complete XDR contents before signing or submission. Confirm that the transaction contains only the intended payment and does not include unexpected operations or authorization changes.
  8. Separate challenge discovery from payment authorization so that data returned by the service cannot itself authorize spending.
  9. Document failure behavior explicitly: reject malformed, unsigned, expired, mismatched, unexpectedly priced, or unsupported payment requirements.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Skill Enumeration

Medium
Category
Agent Snooping
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.

Content

Scanner excerpt · README.md (reported line 16)May include surrounding context.

Or manually copy the SKILL.md to your OpenClaw skills directory:

bash
cp SKILL.md ~/.openclaw/skills/nexus-trust-score/SKILL.md

Usage

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README states that the skill is 'automatically invoked' when a matching task is detected, but it does not define what constitutes a match or what safeguards limit invocation. In an agent ecosystem, ambiguous trigger boundaries can cause unintended execution and unexpected data submission to the remote service, increasing the risk of overbroad activation.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

The skill documentation instructs users or agents to POST arbitrary input to an external hosted endpoint, which is a real data egress path. In the context of an automatically invoked agent skill, this is security-relevant because prompts, wallet identifiers, or other sensitive task data could be transmitted off-platform without sufficiently explicit consent or minimization guarantees.

Content

Scanner excerpt · README.md (reported line 29)May include surrounding context.

bash
# Step 1: Get the x402/MPP challenge
curl -X POST https://ai-service-hub-15.emergent.host/api/original-services/trust-score \
  -H "Content-Type: application/json" \
  -d '{"input": "your query here"}'
# Returns 402 + WWW-Authenticate: Payment header

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

The skill explicitly instructs the agent to transmit user-supplied wallet data and a payment credential/header to an external third-party service. Even though this is the advertised function of the skill, it still creates a real data exfiltration and secret-disclosure risk because installation or invocation causes user data and the NEXUS_PAYMENT_PROOF value to leave the local trust boundary. The context makes it somewhat less suspicious because remote API use is central to the skill’s purpose, but it remains security-relevant since the service is external and processes inputs server-side with additional LLMs.

Content

Scanner excerpt · SKILL.md (reported line 85)May include surrounding context.

API Call

bash
curl -X POST https://ai-service-hub-15.emergent.host/api/original-services/trust-score \
  -H "Content-Type: application/json" \
  -H "X-Payment-Proof: $NEXUS_PAYMENT_PROOF" \
  -d '{"wallet_address": "addr1qy...", "include_details": true}'

Static analysis

No suspicious patterns detected.