Back to skill

Security audit

GitHub Trending Blog Pipeline

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent blog-generation purpose, but its workflow uses unsafe shell command templates that could let crafted inputs or repository content execute commands.

Install only if you are comfortable with a workflow that runs GitHub CLI queries, summarizes remote repository content, invokes local rendering/article tools, and writes drafts to /tmp. Review or harden the workflow before using it with untrusted repository content or arbitrary user inputs, especially the shell command templates and heredoc draft-saving step.

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

T09 · Insecure Skill Coding Practices

Error
Location
workflow.json:18
Finding

Shell Command Injection Through Unsanitized Workflow Template Interpolation

Content
View full analysis
1000 pushed:>{{date}}\", type: REPOSITORY, first: 20) { nodes { ... on Repository { nameWithOwner description stargazerCount primaryLanguage url } } } }' --jq '.data.search.nodes[]'", ``` ```json "command": "summarize \"{{repo_url}}\" --extract-only", ``` ```json "command": "python3 /root/.openclaw/workspace/skills/card-renderer/scripts/render_vscode_card.py \"{{project_name}}\" \"{{one_liner}}\" \"/tmp/readme_summary.md\" \"/tmp/output/\"", ``` ```json "command": "cat > /tmp/github_blog_{{date}}.md << 'EOF'\n{{blog_content}}\nEOF\necho 'Blog saved to /tmp/github_blog_{{date}}.md'", ``` ### Technical Analysis The workflow directly interpolates template values into command strings intended for shell execution. The affected values include `language`, `date`, `repo_url`, `project_name`, `one_liner`, and `blog_content`. Surrounding a placeholder with shell quotes is not a sufficient defense because interpolation occurs before shell parsing. An attacker-controlled value can include the matching quote character, terminate the intended argument, insert shell syntax, and then restore syntactic validity. Command substitution constructs may also be evaluated when they occur in the resulting double-quoted command. The draft-saving step is especially hazardous. It inserts generated article content directly into a shell heredoc. Although the delimiter is quoted, a line containing only `EOF` still terminates the heredoc. Any following lines in `blog_content` would then be parsed as shell commands. The `date` placeholder is also inserted into an unquoted output path, enabling shell metacharacter injection and potentially arbitrary path selection. Repository de ...[truncated 2514 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The README frames the skill entirely in Chinese and the workflow is tailored to Chinese公众号 output, without indicating that language should follow user preference. This can cause unwanted behavior where the agent answers in Chinese or adopts a China-specific publishing style even when the user requested another language or audience, reducing reliability and potentially causing misaligned outputs.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are overly broad and include generic requests like '技术博客' and '帮我写一篇关于 XXX 的技术博客', which can cause the skill to activate for ordinary writing tasks unrelated to GitHub Trending. In an agent setting, this creates prompt-scope hijacking risk: the skill may override user intent, pull in external tooling, or steer outputs into a fixed workflow when the user only asked for general content help.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger phrases are very broad and map to common content-creation or trend-tracking requests, which can cause the skill to activate outside a clearly bounded user intent. This increases the chance of unintended execution of a multi-step workflow that fetches external content and writes output files, potentially surprising the user or causing unnecessary external/API actions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The top-level description specifies a WeChat technical blog creation workflow in Chinese, and later steps describe generating a Chinese公众号 article, but the manifest does not indicate that language is configurable or limited for a region-specific compliance reason. This creates a natural-language locale constraint without user opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The workflow performs external network operations against GitHub and submits repository content for summarization without warning users about network use or possible data exposure. In agent environments, undisclosed remote access can violate privacy expectations, leak context-derived inputs, or trigger actions in restricted environments.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This workflow writes generated content to /tmp as a Markdown file, but the manifest does not clearly disclose that filesystem modification will occur. Undisclosed write behavior is dangerous because users or higher-level orchestrators may assume the workflow is read-only, leading to unexpected persistence of potentially sensitive or unreviewed content.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are broad enough to activate the workflow for generic requests about GitHub, technical blogs, or developer content that may fall outside the user's intended scope. In an agent setting, overbroad activation can cause unintended network access, content generation, and file creation, increasing the chance of surprising or unauthorized actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill saves generated artifacts to local paths like /tmp/output/cover.png and /tmp/blog_article.md but does not clearly warn the user that files will be created. While not directly a code-execution issue, silent file creation can lead to user surprise, accidental overwrites in adapted versions of the skill, or retention of potentially sensitive generated content on disk.

Content

No source excerpt is available for this finding.