Back to skill

Security audit

AI SkillHub

Security checks for vulnerabilities and agentic risk

Overview

This skill can automatically publish full extracted or pasted content to GitHub using local credentials, with weak validation around commands and repository paths.

Review this skill carefully before installing. Only use it with a narrowly scoped GitHub token and non-sensitive source material, and avoid private, copyrighted, credential-bearing, or personal content unless you explicitly intend to publish the complete raw text. The skill should add URL and keyword validation, secure per-run temp directories, safer credential handling, and an explicit publish confirmation before normal use.

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

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:48
Finding

Shell Command Injection Through User-Controlled URL Interpolation

Content
View full analysis
&1 ``` ```bash python3 ~/.openclaw/scripts/wx_extract.py "{url}" ``` ### Technical Analysis The Skill directs the agent to interpolate a user-supplied URL directly into shell command text. Enclosing the placeholder in double quotes does not make arbitrary input safe. A URL containing a double quote can terminate the quoted argument, after which shell operators, command substitutions, redirections, or additional commands can be introduced. This issue applies to commands executed by the agent on the VPS and to the PowerShell command presented to the user. The latter could become dangerous if a maliciously constructed URL is copied and executed without inspection. The Skill does not prescribe URL parsing, scheme validation, host allowlisting, structured process invocation, or shell-safe argument encoding. ### Attack Path 1. An attacker supplies a crafted `!skill` URL containing a quote-breaking payload. 2. The agent selects the applicable platform execution card. 3. The `{url}` placeholder is substituted into the documented command. 4. The malicious quote terminates the intended URL argument. 5. The shell or PowerShell interpreter processes the remaining payload as command syntax. 6. The injected command runs with the privileges of the agent process or, for the local fallback, the user executing PowerShell. ### Impact Assessment Successful exploitation can provide arbitrary command execution under the account runnin ...[truncated 364 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:305
Finding

Repository Path Traversal Through Unvalidated Manual Keywords

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:298
Finding

GitHub Credential Exposure Through an Authenticated Command-Line URL

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:88
Finding

Predictable Shared Temporary Paths Permit Symlink and Cross-Run Interference

Content
View full analysis
&1 ``` ```python result = model.transcribe('/tmp/content_audio.mp3', language='zh') with open('/tmp/原始内容.txt', 'w', encoding='utf-8') as f: f.write(result['text']) ``` ```markdown 写入 `/tmp/原始内容.md`: ``` ```markdown 写入 `/tmp/SKILL.md`: ``` ```bash rm -rf /tmp/skillhub_repo git clone "https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO}.git" /tmp/skillhub_repo mkdir -p "/tmp/skillhub_repo/skills/{category}/{keyword}" cp /tmp/原始内容.md "/tmp/skillhub_repo/skills/{category}/{keyword}/原始内容.md" cp /tmp/SKILL.md "/tmp/skillhub_repo/skills/{category}/{keyword}/SKILL.md" cd /tmp/skillhub_repo git config user.email "openclaw@bot" git config user.name "OpenClaw Bot" git add . git commit -m "Add skill [{category}/{keyword}] - $(date '+%Y-%m-%d')" git push origin ${GITHUB_BRANCH:-main} rm -rf /tmp/skillhub_repo ``` ### Technical Analysis The workflow uses globally predictable names under `/tmp` for downloaded audio, transcripts, generated Markdown, and the cloned repository. These names are shared across every invocation. On a multi-user system, another local process can pre-create files or symbolic links at predictable file paths before a write occurs. Concurrent legitimate runs can also overwrite each other's artifacts, causing one user's source material to be included in another user's result. The fixed repository directory creates race opportunities between deletion, clone, file copying, and cleanup. Although `rm -rf` ordinarily removes a symbolic link itself rather than recursively following its target, the predictable path still permits denial of service and race-based replacement or contamination of the workin ...[truncated 1130 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Findings (17)

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

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

Content

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

md
---
name: ai-skillhub
description: OpenClaw AI SkillHub 核心。支持两种触发方式:①「!skill URL」自动模式,AI 自动归纳关键词和分类;②「!skill 关键词 URL」手动模式,用户指定关键词。提取内容 → 生成原始内容.md + SKILL.md → 推送 GitHub。
---

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill explicitly requires preserving the complete raw content '一字不删' and later publishing it, which creates a direct natural-language data exfiltration path. Any secrets, personal data, copyrighted text, or pasted private notes included in the source will be retained and potentially exposed externally.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This step combines secret use, repository cloning, and remote publication, yet the skill provides no explicit warning or consent checkpoint immediately before the external write occurs. That makes accidental exfiltration of scraped or user-provided content significantly more likely.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
99% confidence
Finding

Reading GITHUB_TOKEN from ~/.openclaw/.env is direct credential access by the skill. Prompt-defined skills should not be able to pull local secrets into their execution flow, because this widens the blast radius from content processing to authenticated repository control.

Content

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

[Step 8] 推送 GitHub

bash
export GITHUB_TOKEN=$(grep GITHUB_TOKEN ~/.openclaw/.env | cut -d= -f2)
export GITHUB_REPO=$(grep GITHUB_REPO ~/.openclaw/.env | cut -d= -f2)
export GITHUB_BRANCH=$(grep GITHUB_BRANCH ~/.openclaw/.env | cut -d= -f2-)

Credential Access

High
Category
Privilege Escalation
Confidence
99% confidence
Finding

Reading repository configuration from a local .env file is another form of local secret/config harvesting that couples the skill to host-resident sensitive state. Even if the repository name is less sensitive than the token, this pattern enables unauthorized discovery and use of local deployment configuration.

Content

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

bash
export GITHUB_TOKEN=$(grep GITHUB_TOKEN ~/.openclaw/.env | cut -d= -f2)
export GITHUB_REPO=$(grep GITHUB_REPO ~/.openclaw/.env | cut -d= -f2)
export GITHUB_BRANCH=$(grep GITHUB_BRANCH ~/.openclaw/.env | cut -d= -f2-)

rm -rf /tmp/skillhub_repo

Credential Access

High
Category
Privilege Escalation
Confidence
99% confidence
Finding

Reading the branch setting from ~/.openclaw/.env continues the unsafe pattern of host configuration access from within the skill. Combined with the token and repo reads, it completes an autonomous write path to a remote destination using locally stored secrets.

Content

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

bash
export GITHUB_TOKEN=$(grep GITHUB_TOKEN ~/.openclaw/.env | cut -d= -f2)
export GITHUB_REPO=$(grep GITHUB_REPO ~/.openclaw/.env | cut -d= -f2)
export GITHUB_BRANCH=$(grep GITHUB_BRANCH ~/.openclaw/.env | cut -d= -f2-)

rm -rf /tmp/skillhub_repo
git clone "https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO}.git" /tmp/skillhub_repo

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
export GITHUB_REPO=$(grep GITHUB_REPO ~/.openclaw/.env | cut -d= -f2)
export GITHUB_BRANCH=$(grep GITHUB_BRANCH ~/.openclaw/.env | cut -d= -f2-)

rm -rf /tmp/skillhub_repo
git clone "https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO}.git" /tmp/skillhub_repo

mkdir -p "/tmp/skillhub_repo/skills/{category}/{keyword}"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
export GITHUB_REPO=$(grep GITHUB_REPO ~/.openclaw/.env | cut -d= -f2)
export GITHUB_BRANCH=$(grep GITHUB_BRANCH ~/.openclaw/.env | cut -d= -f2-)

rm -rf /tmp/skillhub_repo
git clone "https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO}.git" /tmp/skillhub_repo

mkdir -p "/tmp/skillhub_repo/skills/{category}/{keyword}"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
export GITHUB_REPO=$(grep GITHUB_REPO ~/.openclaw/.env | cut -d= -f2)
export GITHUB_BRANCH=$(grep GITHUB_BRANCH ~/.openclaw/.env | cut -d= -f2-)

rm -rf /tmp/skillhub_repo
git clone "https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO}.git" /tmp/skillhub_repo

mkdir -p "/tmp/skillhub_repo/skills/{category}/{keyword}"

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

md
export GITHUB_REPO=$(grep GITHUB_REPO ~/.openclaw/.env | cut -d= -f2)
export GITHUB_BRANCH=$(grep GITHUB_BRANCH ~/.openclaw/.env | cut -d= -f2-)

rm -rf /tmp/skillhub_repo
git clone "https://${GITHUB_TOKEN}@github.com/${GITHUB_REPO}.git" /tmp/skillhub_repo

mkdir -p "/tmp/skillhub_repo/skills/{category}/{keyword}"

Ssd 3

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The prohibition against omitting or truncating original content mandates full retention of raw material, including user-pasted fallback inputs from earlier steps. In the context of automatic GitHub publication, this materially increases the chance of leaking sensitive or proprietary information.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
5. **禁止只推送一个文件**——必须同时推送 `原始内容.md` + `SKILL.md`

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill description says extracted content will be pushed to GitHub, but it does not provide a clear user-facing disclosure that external transmission/publication will occur as part of normal operation. Users may supply URLs or pasted content without realizing the output will be published remotely.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The prompt explicitly requires a keyword of '2-6个字' and uses fixed Chinese category labels, which imposes a Chinese-language/locale convention. The file does not indicate that the user may choose another language or that the skill is intentionally limited to a Chinese-only region-specific use case.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs saving the complete extracted content verbatim, including any pasted user material, without warning about retention. Full-fidelity storage materially increases the chance of retaining copyrighted, private, regulated, or otherwise sensitive information beyond what is necessary for summarization.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill reads GitHub credentials from a local .env file and performs an autonomous clone/commit/push workflow to an external repository. For a content-curation skill, this creates an unnecessary secret-handling and outbound publication capability that can expose sensitive extracted content and enables repository modification without an explicit consent gate.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill accesses local Bilibili cookie material to retrieve third-party content, which expands its privileges into credentialed browsing. Even if intended for legitimate extraction, exposing the agent to reusable session data increases the risk of unauthorized account use or accidental leakage of local secrets.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.