Back to skill

Security audit

Skill Multi Publisher

Security checks for vulnerabilities and agentic risk

Overview

This skill openly automates publishing, but it can push local files to public services and create marketplace PRs without strong scoping or confirmation safeguards.

Review this carefully before installing. Use it only in a clean skill-only directory, inspect the exact files that would be committed, run a secret scan, pin installation sources where possible, and require the agent to show every destination and ask for explicit approval before creating public repositories, pushing, publishing to ClawHub, or opening PRs.

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
SKILL.md:68
Finding

Unvalidated Metadata and User Input Interpolated into Shell Commands

Content
View full analysis
git init git add -A git commit -m "Release: v" gh repo create / --public --description "" --source . --push ``` ```bash clawhub publish \ --slug \ --name "" \ --version \ --tags "" \ --changelog "" ``` Additional unquoted substitutions occur in community publishing commands: ```bash git checkout -b add- mkdir cp /SKILL.md /SKILL.md ``` ### Technical Analysis The skill instructs an agent to substitute values such as the skill directory, skill name, version, description, tags, changelog, and GitHub username directly into shell command templates. Several substitutions are unquoted, while quoted substitutions are still unsafe if the generated value is not escaped before inclusion in a shell command. The validation procedure only displays the first ten lines of `SKILL.md`: ```bash head -10 SKILL.md ``` It does not enforce a character allowlist, validate YAML field types, canonicalize paths, or reject shell metacharacters. If an agent follows these instructions by constructing a command string and invoking it through a shell, attacker-controlled metadata can alter the command's syntax. Potentially dangerous characters include command separators, command substitutions, redirection operators, quotes, and newline characters. Quoting alone is insufficient when a value can contain a quote that terminates the intended quoted argument. ### Attack Path 1. An attacker supplies a skill directory containing crafted YAML metadata, or asks the publishing agent t ...[truncated 1382 chars]
Remediation
View remediation
` and verify that it is an expected directory before use. 4. Execute commands through an argument-array API without a shell. For example, pass `["clawhub", "publish", skillDir, "--slug", slug]` directly to the process launcher. 5. Do not form executable shell commands by concatenating metadata or user input. 6. If shell execution is unavoidable, use a proven shell-escaping implementation for every dynamic argument and reject newline characters. 7. Display the exact validated arguments and destination repositories to the user before execution. 8. Require explicit confirmation before repository creation, public upload, or marketplace publication. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:68
Finding

Recursive Git Staging Can Publish Secrets and Unrelated Files

Content
View full analysis
git init git add -A git commit -m "Release: v" gh repo create / --public --description "" --source . --push ``` The update flow repeats the same broad staging behavior: ```bash cd && git add -A && git commit -m "Update: " && git push ``` The documented checklist only provides a manual reminder: ```markdown - [ ] No secrets (.env, credentials) in the directory ``` ### Technical Analysis `git add -A` recursively stages all tracked modifications, deletions, and untracked files within the applicable Git working tree. The workflow then commits those files and creates or updates a public GitHub repository. The skill does not require: - An explicit file allowlist. - A repository-boundary check. - Inspection of the staged file list. - A secret scan. - A generated defensive `.gitignore`. - Verification that `` is the root of a standalone repository. - Confirmation immediately before public upload. The checklist's instruction to ensure that no secrets are present is not an enforced control. If the selected skill directory resides inside a larger Git repository, Git operations may also apply to the enclosing repository, increasing the possibility that unrelated changes are staged. ### Attack Path 1. The selected skill directory or enclosing Git repository contains a sensitive or unrelated file, such as `.env`, an API token, a private key, local configuration, a build artifact, or unpublished source code. 2. The agent changes into the supplied directory and runs `git init` if needed. 3. `git add -A` stages all applicabl ...[truncated 1160 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
README.md:6
Finding

Installation Uses Unpinned Mutable Third-Party Sources

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (21)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
- Skill directory with valid `SKILL.md` containing YAML frontmatter (name + description)

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The README claims broad publishing support, but the documented flow only covers GitHub and ClawHub and omits the stated community marketplace PR submission behavior. In a publishing skill that can create public repos and submit external updates, mismatched documentation is dangerous because users may authorize wider external actions than they understand or auditors may miss unlisted behaviors.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger phrases are broad enough to match ordinary requests like 'Publish this skill' or 'Release this skill everywhere' without requiring explicit confirmation of external side effects. In context, this skill performs high-impact actions such as repo creation and pushing content publicly, so ambiguous activation materially increases the risk of accidental data exposure or unintended publication.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README describes commands that initialize repos, commit all files, create public GitHub repositories, push content, and publish to ClawHub, but it does not clearly warn that local files will be sent to external public services. In this context, omission is high risk because users may run the workflow in directories containing unintended files, leading to source, credential, or proprietary data exposure.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The example prompts reinforce broad, ambiguous activation for a skill that performs sensitive external publishing actions. Because the skill can push local files to public services, vague examples make accidental invocation more likely and reduce informed user consent.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

MCP server references in the skill manifest without version pinning are a rug-pull risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is explicitly designed to create repositories, commit local files, push to GitHub, publish to ClawHub, and open PRs across multiple external services, but it does not require an explicit user confirmation warning before making public changes. In a security context, this can lead to accidental publication of sensitive files, unintended reputation-impacting actions, or unauthorized external modifications if the skill is triggered casually.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The file includes Chinese section headings and examples alongside English content, plus Chinese-only promotional text later in the README, but does not indicate whether bilingual output is intentional or optional. Under the locale policy rule, forcing or assuming a language without user opt-in can be a policy concern.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill states it will auto-generate LICENSE and README.md if missing, but it does not warn the user that project files will be created or modified. Silent file creation can overwrite expectations, alter repository contents, and contribute to accidental publication of incorrect or misleading metadata.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The text specifies a locale-dependent behavior: generating README content in bilingual CN/EN if the user is Chinese-speaking. This imposes language handling based on inferred user identity rather than an explicit opt-in or configurable preference.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.