Back to skill

Security audit

Clawhub Gate

Security checks for vulnerabilities and agentic risk

Overview

This skill is a plausible ClawHub release helper, but its script can publish or update a skill before the promised security gate completes and has a code-injection flaw in its polling path.

Review before installing or using this as a release gate. Do not rely on `--local-only` to avoid network or publication, and do not treat this as a true pre-publish blocker unless the sync order, rollback behavior, slug handling, and dependency installation guidance are fixed.

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

T09 · Insecure Skill Coding Practices

Error
Location
references/clawhub_gate.sh:288
Finding

Local-only mode still publishes the target Skill

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
references/clawhub_gate.sh:160
Finding

Directory-derived slug is interpolated into executable Python source

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
references/clawhub_gate.sh:288
Finding

Remote security verdict is obtained only after public synchronization

Content
View full analysis
&1; then fail "clawhub sync failed" exit 1 fi log "clawhub sync: DONE" } ``` ### Technical Analysis The Skill is described as a pre-publish security gate, but its actual order is: 1. Run limited local checks. 2. Publish the Skill. 3. Wait for ClawScan. 4. Report failure if the published version is malicious or otherwise rejected. A failure after publication only changes the local exit status. The script contains no rollback, unpublish, quarantine, visibility restriction, or deletion operation. Therefore, a version rejected by ClawScan may remain remotely available after the gate has failed. This is a fail-open publication workflow. ShellCheck and Bandit cannot establish that an entire Skill is safe: they only analyze shell and Python code for selected patterns and do not cover instruction hijacking, non-Python payloads, embedded secrets, or broader semantic behavior. ### Attack Path 1. An attacker submits a harmful Skill that does not trigger the configured ShellCheck or Bandit thresholds. 2. A maintainer runs the purported pre-publish gate. 3. Local analysis passes. 4. `clawhub sync` creates or updates the remote version. 5. ClawScan later marks the version suspicious, malicious, or failed. 6. The script exits with an error but performs no rollback. 7. The rejected version can remain published and may be downloaded or e ...[truncated 873 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:95
Finding

Documentation recommends unpinned installation into the system Python environment

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (9)

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill explicitly describes networked behavior: it reads a local auth token, invokes clawhub sync, and polls a remote ClawScan API, but it declares no permissions or allowed-tools scope. That mismatch weakens reviewability and can let a user invoke a skill with broader side effects than the manifest communicates, including publication actions and outbound requests.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger regexes are very broad and can match ordinary discussion of publishing, syncing, or security checks, causing the skill to activate outside narrowly intended contexts. Because this skill can run local analyzers, read config, make network calls, and trigger clawhub sync publication behavior, overmatching raises the risk of accidental side effects and unintended release operations.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script’s advertised purpose is to block publication until VirusTotal and ClawScan checks pass, but --local-only exits successfully after local static analysis and skips the remote security gate entirely. In a pre-publish security skill, this creates a real policy-bypass path: users or automation can publish without the very checks the skill claims to enforce.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The natural-language instructions and trigger phrases are Chinese-only, which effectively imposes a language constraint on users. The file does not indicate that this is an intentional region-specific skill or provide an opt-in language/locale choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

This shell script includes user-facing natural-language comments and usage guidance in Chinese only, such as the location and usage lines. Under the language/locale policy, forcing a specific language without offering a choice or documenting a justified locale constraint is a policy concern.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The log/documentation for Phase 2 explicitly states Publishing to ClawHub, which communicates a concrete publish action. The code actually runs clawhub sync, and elsewhere the manifest/triggers distinguish sync from publish, so this inline documentation overstates what the step does.

Content

No source excerpt is available for this finding.