Back to skill

Security audit

Find Skills

Security checks for vulnerabilities and agentic risk

Overview

This skill is a search tool, but it can present third-party skill metadata as verified ClawHub content and print unsafe install-command suggestions from remote data.

Review this carefully before installing. It does not appear to run arbitrary code or persist itself, but its search results may overstate trust in third-party metadata. Do not treat the displayed verified status or install command as authoritative without checking the actual skill source and identifier yourself.

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

T09 · Insecure Skill Coding Practices

Warning
Location
src/clawhub-api.js:74
Finding

Third-Party Mirror Results Are Unconditionally Marked as Verified ClawHub Skills

Content
View full analysis
axios.get(mirrorUrl, { params }), { maxRetries: 3, retryDelay: 1000, retryMultiplier: 2, retryableStatusCodes: [429, 500, 502, 503, 504] }); // 处理返回的数据 const results = response.data.results || []; console.log(`[ClawHubAPI] 镜像站返回 ${results.length} 个结果`); // 转换为 Skill 对象 const skills = results.map(item => { // 从 metaContent 中提取信息 const metaContent = item.metaContent || {}; const skillMd = metaContent.skillMd || ''; // 解析 skillMd 中的信息 const nameMatch = skillMd.match(/name: (.*)/); const descriptionMatch = skillMd.match(/description: (.*)/); return Skill.fromJSON({ name: metaContent.displayName || item.displayName || nameMatch?.[1] || item.slug, slug: item.slug, description: metaContent.DisplayDescription || descriptionMatch?.[1] || item.summary || '暂无描述', tags: metaContent.Keywords || [], downloads: 0, verified: true, qualityScore: item.score || 0, repository: '', installCommand: '', version: item.version || '1.0.0', author: metaContent.owner || '未知作者', createdAt: new Date(item.updatedAt || Date.now()).toISOString(), updatedAt: new Date(item.updatedAt || Date.now()).toISOString() }); }); ``` The resulting object is subsequently attributed to ClawHub: ```js formatSkill(skill) { const formatted = super.formatSkill(skill); return { ...formatted, source: 'clawhub', sourceUrl: `https://clawhub.ai/skills/${formatted.slug}` }; } ``` ### Technical Analysis Search requests are sent to the third ...[truncated 2188 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
src/sources/base-source.js:36
Finding

Untrusted Remote Metadata Is Rendered as Terminal Text and Shell Command Suggestions Without Sanitization

Content
View full analysis
{ console.log(`\n${index + 1}. ${skill.name}`); console.log(` 来源: ${skill.source}`); console.log(` 描述: ${skill.description}`); console.log(` 标签: ${skill.tags?.join(', ') || '无'}`); console.log(` 下载量: ${skill.downloads || 0}`); console.log(` 质量评分: ${skill.qualityScore || 0}`); console.log(` 已验证: ${skill.verified ? '是' : '否'}`); if (skill.installCommand) { console.log(` 安装命令: ${skill.installCommand}`); } if (skill.sourceUrl) { console.log(` 来源链接: ${skill.sourceUrl}`); } }); ``` Skill details are handled in the same way: ```js static showSkillDetails(skill) { this.showTitle(`技能详情: ${skill.name}`); console.log(`来源: ${skill.source}`); console.log(`描述: ${skill.description}`); console.log(`标签: ${skill.tags?.join(', ') || '无'}`); console.log(`下载量: ${skill.downloads || 0}`); console.log(`质量评分: ${skill.qualityScore || 0}`); console.log(`已验证: ${skill.verified ? '是' ...[truncated 3006 chars]
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (22)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code contains multiple user-visible natural-language strings in Chinese, such as cache/search status logs and error messages, with no apparent locale selection or opt-in. The stated policy flags language or locale constraints when a skill forces a specific language without giving the user a choice.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The comment states that the implementation directly uses the mirror API because the ClawHub source API does not exist or is not public. However, elsewhere the same class calls the primary base URL /api/v1/skills/... and /api/v1/skills via this.client, so the documentation materially misrepresents what the code actually does. This is an intent-level contradiction, not just an omitted detail.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This code hardcodes user-facing messages and operational text in Chinese throughout the file, including returned error messages and log strings. Because there is no indication that the skill is region-specific or that users can choose their preferred language, this creates a natural-language locale policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The language detection logic returns only 'zh' when Chinese characters are present and 'en' for everything else. This forces a binary Chinese/English locale assumption without user opt-in, which can mis-handle users writing in other languages and violates the policy against imposing a language choice implicitly.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This code contains multiple user-facing comments and output strings in Chinese, including help/error/status messages, but provides no option for users to select another language and no indication that the tool is intentionally limited to a Chinese-speaking context. That creates a natural-language policy concern because the skill effectively forces a specific locale without user opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The ranking logic explicitly boosts results containing Chinese characters whenever the detected query language is Chinese, without any user opt-in or transparency. This creates a built-in language-based bias in search relevance that can skew discovery, suppress otherwise more relevant non-Chinese results, and be abused by content publishers who add Chinese text solely to gain ranking advantage.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JavaScript file contains natural-language comments in Chinese and also returns fixed Chinese quality labels such as '优秀' and '良好'. Because the file provides no user opt-in, locale selection, or documentation that the skill is intentionally Chinese-only, it appears to enforce a specific language in a way that can violate language/locale policy requirements.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The getQualityLabel method always returns Chinese-language labels regardless of user preference or environment. This is a natural-language policy concern because it forces a specific language without offering opt-in, choice, or a documented justification for the locale restriction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This code sets the skill description to a Chinese-only string, and the surrounding comments and user-visible error messages are also Chinese-only elsewhere in the file. For a general GitHub source component, forcing a specific language without offering a locale choice or documenting a region-specific constraint is a natural-language policy violation under the language/locale rule.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This JavaScript file contains numerous natural-language comments and runtime messages in Chinese, such as status, warning, and error outputs. Under the policy, forcing a specific language without user opt-in or documented justification is a locale-policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This JavaScript file hard-codes user-facing comments and console output in Chinese throughout the skill, including status messages and command help. The policy allows locale constraints only when the skill offers user opt-in or clearly documents a justified region-specific limitation, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
75% confidence
Finding

The package description is written only in Chinese ('智能搜索和发现...支持中英双语'), which imposes a specific language presentation despite stating bilingual support. For organizational language/locale policy, this can be a concern when the skill does not explicitly offer language choice or provide equivalent multilingual wording in the file.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
91% confidence
Finding

Using a caret range for axios allows installation of future 1.x releases without strict reproducibility, which increases supply-chain risk and can unexpectedly introduce vulnerable versions or behavioral changes. In a skill/package context, dependency drift makes builds non-deterministic and weakens assurance that reviewed code matches deployed code.

Content

Scanner excerpt · package.json (reported line 21)May include surrounding context.

json
"author": "",
  "license": "MIT",
  "dependencies": {
    "axios": "^1.6.8"
  },
  "devDependencies": {}
}

Unverifiable Dependency: axios has 16 known advisory(ies) (CVE-2026-44494 (axios Vulnerable to Full Man-in-the-Middle via Prototype Pollution Gadget in `co); CVE-2026-44495 (axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollut); CVE-2025-62718 (Axios has a NO_PROXY Hostname Normalization Bypass that Leads to SSRF) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
88% confidence
Finding

The manifest references axios without an exact version, while the package family has multiple known advisories; as a result, it is not possible to verify from this file alone whether the installed dependency is safe. This uncertainty is dangerous because axios is commonly used for outbound HTTP requests, and known flaws in such libraries can enable SSRF, credential leakage, or interception-related abuse depending on usage.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The file contains user-facing natural-language comments entirely in Chinese, including operational descriptions such as filtering, sorting, pagination, and source preference. This imposes a specific language/locale in the skill artifact without any opt-in or documented region-specific justification, which matches the language-policy concern described by SQP-3.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The file's natural-language comments are written exclusively in Chinese, which constitutes a language-specific constraint in the skill artifact without any indication of user choice or a documented locale-specific purpose. This matches the policy category for language or locale restrictions expressed in natural language.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JavaScript file contains user-facing natural-language strings and comments exclusively in Chinese, including the description and thrown error messages. Under the policy, forcing a specific language without offering user choice or documenting a justified locale constraint is a natural-language policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The description string is written only in Chinese ('ClawHub 官方技能源') with no indication that users can choose another language. Under the policy, forcing a specific language without opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The error log string ('搜索错误') is user-visible/operator-visible natural language and is fixed to Chinese with no opt-in or locale handling. This can violate the language policy if the skill is expected to support a broader audience.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The error log string ('获取技能详情错误') is fixed to Chinese and does not offer locale selection or justification for the restriction. That creates a potential natural-language policy violation under the language-choice rule.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The error log string ('获取技能列表错误') is written only in Chinese with no language opt-in mechanism. For a general-purpose skill component, this may conflict with organizational language/locale policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code file contains natural-language comments and console messages exclusively in Chinese, including user-visible retry logs. The stated policy flags language or locale constraints when a skill forces a specific language without opt-in, and no choice or justification is documented in this file.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.