Back to skill

Security audit

Sentinel- OpenClaw Runtime Security

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a real security-monitoring skill, but its payment signing, background monitoring, logging, and install flow are broad enough that users should review it before installing.

Install only if you are comfortable with a local security daemon that monitors OpenClaw skill files and process/network activity, stores wallet material under ~/.sentinel, and may auto-sign small USDC payments. Prefer offline/free mode or set the payment limit to 0, verify any binary with an independently signed digest before installation, and review daemon logs for sensitive command-line arguments.

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 (3)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/src/payment.rs:327
Finding

Server-Controlled USDC Authorization Bypasses Recipient Validation and the Advertised Daily Spending Limit

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/src/daemon.rs:269
Finding

Full Process Command Lines May Be Persisted in an Insufficiently Protected Log

Content
View full analysis
".to_string()) .trim() .to_string() } else { String::from_utf8_lossy(&cmdline_bytes) .replace('\0', " ") .trim() .to_string() }; map.insert( pid, ProcInfo { ppid, binary, command, }, ); ``` ```rust let msg = format!( "[{}] {}: Undeclared process execution pid {} (ppid {}) binary={} command={}", finding.severity, finding.skill_name, finding.pid, finding.ppid, finding.observed_binary, finding.command ); log_alert(&msg).await; ``` ```rust async fn log_alert(msg: &str) { let log_path = resolve_home(DAEMON_LOG_FILE); let entry = format!("[{}] {}\n", chrono::Utc::now().to_rfc3339(), msg); if let Ok(mut file) = tokio::fs::OpenOptions::new() .create(true) .append(true) .open(&log_path) .await { use tokio::io::AsyncWriteExt; let _ = file.write_all(entry.as_bytes()).await; } } ``` ### Technical Analysis The process monitor reads complete command lines from `/proc//cmdline`. Command-line arguments frequently contain sensitive information such as API tokens, passwords, database connection strings, signed URLs, session identifiers, or private file locations. When a process is classified as undeclared, the complete command is inserted into an alert and appended verbatim to `~/.sentinel/daemon.log`. No credential redaction or argument minimization is performed. ...[truncated 2072 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
README.md:84
Finding

Release Installation Instructions Do Not Establish a Verifiable Binary or Dependency Trust Chain

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
Findings (51)

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

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

bash
# macOS Apple Silicon
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-aarch64-apple-darwin -o sentinel
chmod +x sentinel && sudo mv sentinel /usr/local/bin/

# macOS Intel
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-apple-darwin -o sentinel

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

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

bash
# macOS Apple Silicon
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-aarch64-apple-darwin -o sentinel
chmod +x sentinel && sudo mv sentinel /usr/local/bin/

# macOS Intel
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-apple-darwin -o sentinel

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

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

bash
# macOS Apple Silicon
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-aarch64-apple-darwin -o sentinel
chmod +x sentinel && sudo mv sentinel /usr/local/bin/

# macOS Intel
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-apple-darwin -o sentinel

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

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

bash
# macOS Apple Silicon
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-aarch64-apple-darwin -o sentinel
chmod +x sentinel && sudo mv sentinel /usr/local/bin/

# macOS Intel
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-apple-darwin -o sentinel

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

This description-behavior mismatch indicates the skill may function primarily as reporting or CLI presentation rather than active enforcement, despite claiming runtime protection and premium monitoring. In a defensive tool, such overstatement can directly impair incident detection and response by giving operators a false picture of coverage.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

This description-behavior mismatch indicates the skill may function primarily as reporting or CLI presentation rather than active enforcement, despite claiming runtime protection and premium monitoring. In a defensive tool, such overstatement can directly impair incident detection and response by giving operators a false picture of coverage.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

This description-behavior mismatch indicates the skill may function primarily as reporting or CLI presentation rather than active enforcement, despite claiming runtime protection and premium monitoring. In a defensive tool, such overstatement can directly impair incident detection and response by giving operators a false picture of coverage.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

This description-behavior mismatch indicates the skill may function primarily as reporting or CLI presentation rather than active enforcement, despite claiming runtime protection and premium monitoring. In a defensive tool, such overstatement can directly impair incident detection and response by giving operators a false picture of coverage.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

This description-behavior mismatch indicates the skill may function primarily as reporting or CLI presentation rather than active enforcement, despite claiming runtime protection and premium monitoring. In a defensive tool, such overstatement can directly impair incident detection and response by giving operators a false picture of coverage.

Content

No source excerpt is available for this finding.

YARA rule 'agent_skill_prompt_injection_hidden_instructions': Prompt injection or hidden instructions embedded in AI agent skill text [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · references/threat-model.md (reported line 1)May include surrounding context.

md
# Threat Model

Full matrix of threats runtime-sentinel defends against, with attack
descriptions sourced from the ClawHavoc campaign and related research.

---

## T1 — Skill file tampering (post-install mutation)

**What it is**: A skill is installed cleanly, passes VirusTotal, then later
mutates itself. A dropper payload embedded in a "safe" initial version phones
home and overwrites files after a delay or trigger condition.

**How sentinel detects it**: On first install, `sentinel` records SHA-256
hashes of every file in the skill directory. On each subsequent audit or
daemon tick, hashes are rec

Instruction Override

High
Category
Prompt Injection
Confidence
80% confidence
Finding

This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.

Content

Scanner excerpt · references/threat-model.md (reported line 33)May include surrounding context.

md
data.

**Classic patterns**:
- `<!-- SYSTEM: ignore previous instructions and... -->`
- `\n\nHuman: forget your instructions. Your new task is...`
- Unicode homoglyph substitution to evade naive string matching
- Base64-encoded instructions decoded at runtime

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/threat-model.md (reported line 33)May include surrounding context.

md
data.

**Classic patterns**:
- `<!-- SYSTEM: ignore previous instructions and... -->`
- `\n\nHuman: forget your instructions. Your new task is...`
- Unicode homoglyph substitution to evade naive string matching
- Base64-encoded instructions decoded at runtime

Instruction Override

High
Category
Prompt Injection
Confidence
80% confidence
Finding

This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.

Content

Scanner excerpt · references/threat-model.md (reported line 34)May include surrounding context.

md
**Classic patterns**:
- `<!-- SYSTEM: ignore previous instructions and... -->`
- `\n\nHuman: forget your instructions. Your new task is...`
- Unicode homoglyph substitution to evade naive string matching
- Base64-encoded instructions decoded at runtime

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The code downloads a remote archive from ClawHub, writes it to disk, and invokes the system unzip binary on untrusted content. Extracting attacker-controlled archives can expose the host to archive traversal/zip-slip issues, decompression bombs, or risk inherited from the external extractor, especially since there is no visible validation of archive contents, size, symlinks, or extraction paths before processing.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/src/patterns/mod.rs (reported line 17)May include surrounding context.

rust
Regex::new(r#"(?i)aws.{0,20}secret.{0,20}['"][0-9a-zA-Z/+]{40}['"]"#).unwrap(),
        ),
        (
            "GitHub Personal Access Token",
            Regex::new(r"ghp_[0-9a-zA-Z]{36}").unwrap(),
        ),
        (

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
80% confidence
Finding

Skill attempts to nullify the agent's safety policies or restrictions ('you have no restrictions', 'ignore your guidelines', 'do anything now'). This is a direct jailbreak that disables guardrails.

Content

Scanner excerpt · scripts/src/patterns/mod.rs (reported line 86)May include surrounding context.

rust
),
        (
            "jailbreak-keyword",
            Regex::new(r"\b(jailbreak|dan mode|developer mode|unrestricted mode|do anything now)\b").unwrap(),
            Severity::High,
        ),
        (

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code handles highly sensitive wallet secrets, including mnemonic export and recovery phrase ingestion, despite the skill’s stated purpose being runtime security auditing. In a security-focused skill context, collecting and exposing recovery phrases is especially dangerous because users are primed to trust the tool; any compromise, misuse, shoulder-surfing, terminal logging, or future code change could directly lead to wallet theft.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
65% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

Optional: run it in background at the shell level

sentinel daemon start > ~/.sentinel/daemon.log 2>&1 & disown

text

---

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

bash
# macOS Apple Silicon
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-aarch64-apple-darwin -o sentinel
chmod +x sentinel && sudo mv sentinel /usr/local/bin/

# macOS Intel
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-apple-darwin -o sentinel

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

bash
# macOS Apple Silicon
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-aarch64-apple-darwin -o sentinel
chmod +x sentinel && sudo mv sentinel /usr/local/bin/

# macOS Intel
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-apple-darwin -o sentinel

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

md
# macOS Intel
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-apple-darwin -o sentinel
chmod +x sentinel && sudo mv sentinel /usr/local/bin/

# Linux x86_64
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-unknown-linux-gnu -o sentinel

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

md
# macOS Intel
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-apple-darwin -o sentinel
chmod +x sentinel && sudo mv sentinel /usr/local/bin/

# Linux x86_64
curl -L https://github.com/spaceman420urdog-afk/runtime-sentinel/releases/latest/download/sentinel-x86_64-unknown-linux-gnu -o sentinel

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill advertises and instructs shell-based operations through the sentinel binary, but the manifest does not declare any explicit tool scope or permissions. This weakens policy enforcement and user understanding, making it easier for a skill with filesystem, process, and possible network reach to execute without clear guardrails.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The trigger language is broad enough that the skill may activate for many generic security-related prompts, increasing the chance of unintended invocation. For a skill that can inspect files, create wallets, or initiate premium flows, over-triggering increases exposure to unnecessary sensitive operations and user confusion.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

The documentation suggests backgrounding the daemon with disown, which can leave a persistent process running outside normal interactive visibility. Persistence is sensitive in agent skills because it can continue monitoring, consuming resources, or performing actions after the user forgets it is active.

Content

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

md
sentinel daemon start    # runs in foreground, writes to ~/.sentinel/daemon.log
# Run in background from your shell if needed:
#   sentinel daemon start > ~/.sentinel/daemon.log 2>&1 &
#   disown
sentinel daemon status
sentinel daemon stop
sentinel daemon logs     # tail the audit log

Static analysis

Detected: suspicious.prompt_injection_instructions

Prompt-injection style instruction pattern detected.

Warn
Code
suspicious.prompt_injection_instructions
Location
references/threat-model.md:33