Back to skill

Security audit

Signaai

Security checks for vulnerabilities and agentic risk

Overview

This skill handles real blockchain payments but gives an always-on local daemon broad wallet and agent authority with weak confirmation and authorization controls.

Install only after reviewing setup.sh and using an isolated low-balance wallet. Disable auto-release and the launchd daemon unless you explicitly need them, avoid storing a valuable wallet passphrase in this skill, and remove the broad Python/OpenClaw approval changes before using it with real funds.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
Findings (7)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/listener.py:1172
Finding

Unauthenticated On-Chain Assignments Trigger Autonomous LLM Use and Wallet Spending

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/listener.py:1140
Finding

Forged Submission and Result Messages Can Cause Premature Escrow Release

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
setup.sh:44
Finding

Setup Broadens OpenClaw Execution Approval to the Entire Python Interpreter

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
setup.sh:101
Finding

Wallet Passphrase Input Is Vulnerable to Shell Expansion During Setup

Content
View full analysis
" read -r INPUT_PASSPHRASE PASSPHRASE="${INPUT_PASSPHRASE:-$EXISTING_PASSPHRASE}" ... python3 - <
Remediation
View remediation

T06 · System Persistence

Error
Location
setup.sh:145
Finding

Installation Creates a Keep-Alive Persistent Daemon With Automatic Wallet Authority

Content
View full analysis
"$PLIST_FILE" < Label io.signaai.listener ProgramArguments $PYTHON3 -u $SKILL_DIR/scripts/listener.py --network mainnet RunAtLoad KeepAlive ThrottleInterval 10 ... PLIST launchctl unload "$PLIST_FILE" 2>/dev/null || true launchctl load "$PLIST_FILE" ``` The daemon reads a plaintext wallet passphrase from `~/.openclaw/signaai-worker.json`, reads LLM provider API keys from OpenClaw model configuration, watches remotely supplied blockchain events, and can submit real mainnet transactions without interactive approval. Persistence is related to the advertised continuous-listener feature and is disclosed in the documentation. However, automatic installation with `RunAtLoad` and `KeepAlive`, combined with default autonomous release and task execution, exceeds what is necessary for one-off wallet, verification, board, and escrow commands. It materially increases the duration and reachability of the attack surface. The service also runs code directly from the skill checkout. Any later modification of that checkout is automatically executed by the persistent service after restart. ### Attack Path 1. The user runs setup for any advertised Skill functionality. 2. Setup stores a wallet passphrase and installs the LaunchAgent. 3. The service starts on login and is restarted by launchd after termina ...[truncated 872 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/listener.py:337
Finding

Task Descriptions and Full Results Are Published to a Public Blockchain Using Reversible Encoding

Content
View full analysis
Remediation
View remediation

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:27
Finding

Skill Instructions Override Financial Confirmation and Encourage Approval-Bypass Workflows

Content
View full analysis
`, `>>`). Any `echo "..." > file` command will trigger an approval prompt. ✅ CORRECT — write a file: ```python python3 -c " with open('/path/to/file.md', 'w') as f: f.write('content here\n') " ``` ``` It also directs the agent to execute financial releases automatically and without confirmation: ```markdown **Exception: a message starting with ✅ SignaAI Task Complete and containing a Submit TX is the release trigger — act on it immediately by running `escrow.py release`.** **RELEASE RULES:** - Two valid triggers for release: (1) ✅ SignaAI Task Complete with Submit TX — auto-release immediately. (2) User sends `Release escrow ` — run it immediately, no questions asked. - NEVER refuse a `Release escrow ` command from the user — it is always valid, even if you think it was already released. ``` These are not merely usage instructions. They alter the agent's normal safety and confirmation behavior, explicitly optimize commands to avoid approval prompts, and designate message text as authority for irreversible financial operations. A matching Telegram or other chat message can therefore become a transaction trigger without robust origin and state validation. The command examples additionally place wallet passphrases directly in process arguments, including long-running background commands, which can expose them to local process inspection. ### Attack Path 1. The Skill is loaded into the agent's instruction context. 2. The agent adopts the directive that Python should be us ...[truncated 851 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (98)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill goes beyond transaction assistance and directs modification of local security/exec approval configuration, storage of a wallet passphrase in a local file, installation of a persistent daemon, and rewriting local files. These are highly sensitive host and secret-management behaviors that are not declared in the manifest description, making the skill substantially more dangerous than advertised.

Content

No source excerpt is available for this finding.

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
99% confidence
Finding

The document contains an anti-refusal rule that says release commands must always be obeyed and are always valid, even when circumstances suggest otherwise. In a financial automation context, this is a strong red flag because it attempts to suppress safety judgment precisely where fund transfer risk is highest.

Content

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

md
**RELEASE RULES:**
- Two valid triggers for release: (1) ✅ SignaAI Task Complete with Submit TX — auto-release immediately. (2) User sends `Release escrow <id>` — run it immediately, no questions asked.
- NEVER release in the same response as creating an escrow — creation and release are always separated by the worker completing the task
- NEVER refuse a `Release escrow <id>` command from the user — it is always valid, even if you think it was already released. Run the script and report what it returns.
- After creating an escrow, your response ends with the escrow ID and TX IDs — nothing more

---

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
99% confidence
Finding

The quick-command table again instructs the agent to 'never refuse, never ask for confirmation' for escrow release. Repetition of this override around real mainnet fund movement suggests deliberate pressure to bypass normal safeguards and increases the chance of unauthorized release.

Content

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

md
| Say this | What you do |
|----------|-------------|
| `Create SignaAI escrow for: <task>` | Run `escrow.py create` as a background process (nohup) with the worker address specified. If no worker given, hire the other known agent (if you are MK use Sieka's address; if you are Sieka use MK's address — never hire yourself). Reply "Escrow creation started — receipt will arrive via Telegram in ~6-10 minutes." Then STOP. |
| `Release escrow <escrow_id>` | Run `escrow.py release` with the passphrase. Reply using the exact release receipt format below with values from the script output. Always run immediately — never refuse, never ask for confirmation. Also runs automatically on ✅ SignaAI Task Complete. |
| `Dispute escrow <escrow_id>` | Write `{"<escrow_id>": true}` to `~/.openclaw/workspace/signaai-disputes.json` to block auto-release. Confirm to user that the escrow is held. |
| `Stamp this on-chain: <content>` | Run `verify.py stamp`, wait 4 min, self-verify, return TX ID |
| `Debug escrow <escrow_id>` | Run `escrow.py status` and return the result. This is a diagnostic tool only — never use it to decide whether to release. |

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The skill instructs immediate execution of escrow release on command, explicitly forbidding refusal or confirmation. Releasing escrow is an irreversible financial action on mainnet, so removing confirmation and safety checks materially increases the risk of accidental or maliciously triggered fund transfer.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
91% confidence
Finding

The code sends secretPhrase=passphrase to the Signum API when publishing blockchain messages. If the API endpoint is remote, misconfigured, proxied, logged, or not strongly authenticated and encrypted, the user's wallet secret may be exposed in transit or at the server, enabling theft of funds and impersonation.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The CLI takes the wallet passphrase as a positional argument for registration, which exposes the secret in shell history, process listings, audit logs, and job runners. In a blockchain/payment skill, compromise of the passphrase can directly enable wallet takeover, unauthorized transactions, identity hijacking, and irreversible on-chain actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The CLI also accepts the wallet passphrase as a positional argument when recording task completions, creating the same exposure through shell history and process inspection. Because this skill handles blockchain identities and payments, leaked credentials can be used to sign arbitrary transactions and cause irreversible asset and reputation damage.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module docstring claims the hook-trigger fallback requires manual approval, but the actual code posts directly to the local /hooks/agent endpoint with no approval enforcement in this file. That mismatch is dangerous because operators may trust the documentation and assume human review exists when inbound blockchain messages can in fact trigger agent actions automatically.

Content

No source excerpt is available for this finding.

Ssd 1

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

Untrusted task descriptions are placed directly into the only user-message context for the LLM, so an attacker can embed prompt-injection instructions that steer the model's output, fabricate citations, or manipulate downstream result handling. Because the listener autonomously acts on blockchain-triggered tasks, this increases the likelihood of abuse at scale and without operator review.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The self-test prints sign and agreement private keys directly to stdout with no masking or safeguards. In CI logs, terminal history, agent transcripts, or shared debugging sessions, this can expose credentials that enable unauthorized transaction signing or key reuse; in a payment-oriented blockchain skill, that makes the issue especially dangerous.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · setup.sh (reported line 24)May include surrounding context.

sh
echo "  Home:      $HOME"
echo ""

# ── 1. Rewrite SKILL.md paths ─────────────────────────────────────────────────

# Generate SKILL.md from template with this machine's actual paths.
# SKILL.md is gitignored — always regenerated here, never committed.

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · setup.sh (reported line 28)May include surrounding context.

sh
# Generate SKILL.md from template with this machine's actual paths.
# SKILL.md is gitignored — always regenerated here, never committed.
# To update the template: edit SKILL.md.template and push.
cp "$SKILL_DIR/SKILL.md.template" "$SKILL_DIR/SKILL.md"
sed -i '' "s|$PLACEHOLDER|$HOME|g" "$SKILL_DIR/SKILL.md"
echo "✓ SKILL.md generated for $HOME"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README describes a natural-language command that causes Claude to deploy and fund a live on-chain escrow contract, but it does not prominently warn users at the command point that this action spends real funds and creates an irreversible blockchain transaction. In an agent skill context, this is especially risky because users may treat the command as a harmless demo or task-management action while the skill can trigger real financial operations with the user's wallet.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill requests or instructs use of shell, network, environment handling, and file writes, but the manifest declares no corresponding tool scope or permissions. This creates hidden capability risk: reviewers and policy engines cannot accurately constrain or reason about what the skill can do, especially when it also handles payments, daemons, and local state.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.