Back to skill

Security audit

ClawHub Skill Launch Review

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed ClawHub release-review helper with some operational cautions, but no evidence of hidden, destructive, or unrelated behavior.

Install this if you want a Chinese-language ClawHub publish-readiness reviewer. Treat generated commands as previews: check all inserted values, quote or pass arguments safely, and prefer a pinned/reviewed ClawHub CLI version in sensitive release environments.

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

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:56
Finding
Shell Command Injection Through Untrusted Publish Parameters<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:56-66`; duplicated in `templates/publish_review_report.md:72-84` **Vulnerability Type**: Shell command injection through unsafe command generation **Risk Level**: High ### Vulnerable Code ```markdown 1. **识别对象**:路径、skill/plugin、目标 owner、registry latest;未知项写“未提供”。 2. **选择模式**:遵循 auto 规则,或尊重用户显式指定的 quick/deep。 3. **收集证据**:只把读到或执行到的结果记为事实;推断单独标注。 4. **运行检查**:按模式检查结构、版本、页面、环境、安全与发布动作。 5. **给出结论**: - `可以发`:无 P0,关键证据一致 - `补完再发`:无致命结构问题,但存在发布前应修复项 - `先别发`:存在 P0、安全风险、身份冲突或证据互相矛盾 6. **生成命令**: - Skill:`clawhub skill publish <path> --slug <stable-slug> --name "<Human Readable Name>" --dry-run --owner <owner>` - Plugin:先 `clawhub package validate <path>`,再 `clawhub package publish <path> --dry-run` ``` The report template repeats the affected command construction: ```bash clawhub skill publish <path> --slug <stable-slug> --name "<Human Readable Name>" --dry-run --owner <owner> clawhub package validate <path> clawhub package publish <path> --dry-run ``` ### Technical Analysis The Skill instructs the agent to identify package paths, slugs, display names, and owners and then place those values into shell command templates. These values can originate from user input, filesystem names, or package metadata and must therefore be treated as untrusted. The path, slug, and owner placeholders are not quoted. Although the display name is surrounded by double quotes, double quotes do not prevent shell command substitution through constructs such as `$(command)` or backticks. The instructions define neither strict character validation nor a shell-safe escaping mechanism. If the agent replaces the placeholders with untrusted values and the resulting text is subsequently executed in a shell, shell syntax can be interpreted before the `clawhub` process starts. The presence of `--dry-run` does not mitigate this issue because shell expansion and command substitution occur before `clawhub` receives its arg ...[truncated 1522 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not generate executable shell strings from package metadata or user input. Where tool execution is supported, invoke the process with a structured argument array, for example conceptually: ```text ["clawhub", "skill", "publish", path, "--slug", slug, "--name", displayName, "--dry-run", "--owner", owner] ``` 2. Validate every dynamic field before use: - Restrict slugs and owners to an explicitly documented allowlist such as lowercase letters, digits, and hyphens. - Reject control characters, newlines, null bytes, and shell metacharacters. - Resolve and validate paths separately rather than applying a slug-oriented rule to them. - Reject ambiguous values beginning with `-` where they could be interpreted as command options. 3. If a shell command must be displayed for manual use, apply robust POSIX shell quoting independently to every dynamic argument. Do not rely on simple double quotes. 4. Clearly label generated commands as untrusted previews unless all inserted values have passed validation and quoting. 5. Add tests using paths and metadata containing spaces, single and double quotes, semicolons, newlines, redirects, pipes, `$()`, backticks, wildcard characters, and leading hyphens. Verify that no value can create additional commands or unintended arguments. 6. Apply the same correction to both `SKILL.md` and `templates/publish_review_report.md` so the primary workflow and report template cannot diverge. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:15
Finding
Unpinned npm Dependency Allows Unreviewed Supply-Chain Changes<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:15-18` **Vulnerability Type**: Unpinned third-party executable dependency **Risk Level**: Medium ### Vulnerable Code ```yaml install: - kind: node package: clawhub bins: [clawhub] ``` ### Technical Analysis The Skill declares installation of the `clawhub` npm package without specifying an exact reviewed version or an integrity digest. Consequently, installation can resolve to a future mutable package release whose contents were not included in this audit. npm packages may execute lifecycle scripts during installation, and the installed command is subsequently trusted by the Skill's workflow. If the package, publisher account, registry resolution, or a future release is compromised, the resolved dependency could execute attacker-controlled code. This finding does not establish that the current `clawhub` package is malicious. The vulnerability is the absence of version and integrity controls, which prevents reproducible installation and extends trust to future unreviewed releases. ### Attack Path 1. The package publisher account, package release process, or configured npm registry is compromised, or a future release introduces malicious code. 2. The Skill is installed after the malicious or compromised release becomes the version selected by npm. 3. Because no exact version or integrity value is specified, the installer retrieves that new release. 4. Malicious lifecycle code may run during package installation, or malicious behavior may run when the Skill invokes the installed `clawhub` binary. 5. The payload executes with the permissions available to the installing or invoking account. ### Impact Assessment A compromised dependency could execute code with the privileges of the user performing installation or running the CLI. Depending on the environment, this may expose local files, authentication tokens, registry credentials, source repositories, and release artifacts. The depe ...[truncated 252 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin the dependency to an exact version that has been reviewed rather than allowing implicit resolution to the latest release. 2. Where the Skill installation schema supports it, record and verify a package integrity digest. Otherwise, use a lockfile or equivalent reproducible dependency mechanism. 3. Document the expected package registry and publisher identity. Avoid silently accepting dependencies from alternate or user-controlled registries. 4. Review lifecycle scripts and transitive dependencies for each approved update. 5. Introduce an explicit dependency-update process: - Fetch the proposed exact version. - Verify provenance and integrity. - Review package and transitive dependency changes. - Test it in an isolated environment. - Update the version and integrity pin only after approval. 6. Confirm during verification that installation resolves exclusively to the approved version and fails when the downloaded artifact does not match the expected integrity value. ]]>
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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (10)

Ae1

High
Category
analysis-evasion
Content
以最小读取成本完成上线闸门:验证 `SKILL.md` 与 frontmatter、名称/slug/版本一致性、首屏价值、分类与示例、明显安全问题,以及匹配对象类型的 dry-run 前置项。结论使用 `可以发 / 补完再发 / 先别发`,最多列 3 个关键问题和最小补法。
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The natural-language content that users rely on for invocation criteria, modes, workflow, and output contract is presented in Chinese only. This forces a specific language for use and understanding of the skill without documenting user choice or an explicit locale constraint.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This markdown file presents all operational guidance, conclusions, and command context exclusively in Chinese. Under the policy rule, forcing a specific language without user opt-in or a documented justification is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The entire skill content is written in Chinese and provides no indication that users may choose another language or that the skill is intentionally limited to a Chinese-language context. Under the policy, forcing a specific language without opt-in is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This markdown file presents all instructions and scoring criteria exclusively in Chinese, and there is no natural-language indication that users may choose another language or that the skill is intentionally limited to a Chinese-speaking context. Under the policy, forcing a specific language without user opt-in is a locale-policy violation.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This markdown file contains all user-facing guidance in Chinese, and there is no indication that users may choose another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the policy, forcing a specific language without opt-in is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The title and all template sections are written in Chinese, which establishes a fixed language expectation for the skill output. There is no indication that users may choose another language or that the template is restricted to a Chinese-specific compliance or regional workflow.

Natural-Language Policy Violations

Low
Confidence
83% confidence
Finding
This markdown file includes natural-language text indicating a language/locale decision: '中英混合短描述' (mixed Chinese-English short description). Under the policy rule, forcing or prescribing a specific language presentation without documenting user choice or justification can be a locale-policy concern.

Natural-Language Policy Violations

Low
Confidence
95% confidence
Finding
This markdown file contains user-facing instructional content exclusively in Chinese, and there is no indication that the skill is region-specific or that users can opt into this language. Under the policy, forcing a specific language without user choice is a natural-language policy concern.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The entire skill example is written in Chinese, including headings, instructions, and example user utterances, with no indication that language selection is user-configurable or that the skill is intentionally region-specific. This can violate language/locale policy when a skill implicitly forces one language without user opt-in.

Static analysis

No suspicious patterns detected.