Back to skill

Security audit

AI Capability Analyzer

Security checks for vulnerabilities and agentic risk

Overview

The skill does not show malware, but it overstates live safety checks and may tell users third-party skills are safe based on hardcoded data.

Review this skill carefully before installing. It appears to be a static recommendation script rather than a real security analyzer, so do not rely on its safety ratings or install commands without independently checking the exact third-party skill, publisher, version, permissions, and source.

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

Warning
Location
analyze.cjs:278
Finding

Unsubstantiated Security Ratings Can Encourage Installation of Unsafe Third-Party Skills

Content
View full analysis

Vulnerability Details

File Location: analyze.cjs:278-299
Vulnerability Type: Security decisions based solely on hardcoded popularity data
Risk Level: Medium

Vulnerable Code

js
generateReport(skillNames) {
  const skills = skillNames.map(name => this.skillsDatabase[name]).filter(Boolean);
  if (skills.length === 0) {
    return "未找到相关技能";
  }
  
  const topSkill = skills[0];
  return `🎯 推荐技能: ${topSkill.name} (${topSkill.downloads.toLocaleString()}+ 下载, ⭐⭐⭐⭐⭐)\n✅ 安全评级: 高 (满足100/3规则)\n📋 功能: ${topSkill.description}\n🚀 安装: ${topSkill.installCmd}`;
}

securityCheck(skillName) {
  const skill = this.skillsDatabase[skillName];
  if (!skill) {
    return "未找到指定技能";
  }
  
  const meets100Rule = skill.downloads >= 100;
  const safetyRating = meets100Rule ? "高" : "需要谨慎评估";
  
  return `🛡️ 安全评估: ${skill.name}\n- 下载量: ${skill.downloads.toLocaleString()}\n- 安全评级: ${safetyRating}\n- 建议: ${meets100Rule ? "可以安全使用" : "建议先在测试环境验证"}`;
}

Technical Analysis

The security check equates a hardcoded download count of at least 100 with a high security rating and an affirmative recommendation that the skill is safe to use. The generated recommendation likewise assigns five stars and a high security rating without inspecting the recommended package.

Download volume is not evidence of code integrity or safety. The implementation does not verify the package publisher, immutable version, package digest, requested permissions, dependency tree, source code, installation instructions, or malware indicators. The catalog's popularity and safety values are static and may become stale or may not correspond to the package currently available under the displayed slug.

The documentation also describes permission analysis and malware scanning, but those controls are not implemented in the reviewed code. Consequently, users may interpret a popularity heuristic as a substantive security assessment.

...[truncated 1584 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace categorical statements such as “safe to use” and “high security rating” with an explicit popularity-only assessment until substantive security validation is implemented.
  2. Retrieve current package metadata from an authoritative registry rather than relying on hardcoded download and rating values.
  3. Verify package identity using the publisher, exact version, cryptographic digest, and signed provenance where available.
  4. Pin installation recommendations to an audited immutable version or digest instead of an unqualified mutable slug.
  5. Inspect package source code, installation hooks, dependencies, requested permissions, external network destinations, and executable instructions before assigning a security rating.
  6. Integrate real malware and reputation checks only if their results are actually obtained and validated. Clearly report unavailable or inconclusive checks.
  7. Use a multi-factor risk model and present each factor separately. Popularity may be one informational signal but must not independently establish safety.
  8. Add freshness timestamps and fail closed when registry data, provenance, or integrity information cannot be verified.
  9. Require explicit confirmation before offering installation guidance and warn that third-party skills execute with the permissions granted by the user or agent runtime.
  10. Update README.md and SKILL.md so documented security capabilities accurately match the implemented controls.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (11)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · README.md (reported line 20)May include surrounding context.

技能已自动安装到: ~/.nvm/versions/node/v22.22.1/lib/node_modules/openclaw/skills/ai-capability-analyzer/

设置环境变量(可选)

cp .env.example .env

编辑 .env 文件填入你的API密钥

text

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · README.md (reported line 21)May include surrounding context.

设置环境变量(可选)

cp .env.example .env

编辑 .env 文件填入你的API密钥

text

## 使用示例

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file presents the skill description and usage entirely in Chinese, and the invocation examples instruct users to speak to the agent in Chinese. That creates a natural-language locale constraint without any opt-in, alternative language guidance, or justification that the skill is region-specific.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill declares required environment variables and executable binaries, but does not declare an explicit tool scope such as permissions or allowed-tools. This creates an authority boundary mismatch: consumers cannot clearly tell what external actions the skill may perform, increasing the risk of unintended network access, command execution, or secret use when the skill runs.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest description is written entirely in Chinese and presents the skill behavior in that locale without indicating multilingual support or user choice. This can be a language/locale policy issue if the skill implicitly assumes Chinese output for all users.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger conditions are broad and conversationally generic, so the skill may activate on many recommendation, comparison, or security-related requests without clear boundaries. Overbroad activation increases the chance of unintended invocation, causing unnecessary external API calls, exposure of user queries, or unreviewed recommendations in contexts where the user did not specifically request this skill.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The privacy section claims all user queries are processed locally unless cloud APIs are explicitly enabled, yet the skill also states that OPENAI_API_KEY is used for requirement understanding and content generation. This is materially misleading because users may provide sensitive requests believing they stay local when they are actually transmitted to an external provider.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code consistently uses Chinese in comments and CLI/output strings, beginning with the file header and continuing through the command interface, without any indication that the tool is region-specific or that users may choose another language. That creates a natural-language locale policy issue because the skill effectively forces a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill description claims intelligent real-time skill search and security evaluation, but the implementation relies on a hardcoded local database plus mocked results. This creates a trust and integrity issue: users may rely on the tool for current recommendations or safety decisions when it cannot actually verify live ecosystem state or current risk.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code and comments imply a real-time ClawHub API search, but the function only returns hardcoded mock results and never performs an actual authenticated API request. In a skill whose purpose is recommendation and safety assessment, this is dangerous because users may trust stale or fabricated results and make installation or security decisions based on misleading output.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The CLI help text, error text, and command responses shown in the main interface are all in Chinese, and the file provides no mechanism for users to select another language. For a general-purpose skill, this is a locale policy violation unless the restriction is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.