Back to skill

Security audit

Skill Net

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed OpenClaw skill-dependency analyzer that reads local skill definitions and writes local reports, with no evidence of exfiltration, deception, privilege escalation, or skill modification.

Install only if you are comfortable with a tool reading your local OpenClaw skill definitions and writing generated dependency reports under the skill-net workspace. Use explicit skill-related prompts to avoid accidental full scans, and consider removing or pinning the unused PyYAML requirement before automated installs.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Rogue AgentSelf-Modification, Session Persistence
  • 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
Findings (20)

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

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

md
- **Orphan ≠ Broken** — many skills use `/protocol` activation instead of `use when` phrases. Orphans are flagged for awareness, not as errors.
- **Impact is directional** — `A mentions B` doesn't mean `B depends on A`. Delete impact shows what *could* break, not what *will*.
- **Does not modify skills** — this is a read-only diagnostic tool.

## Contributing

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/analyze_deps.py # default: ZH then EN

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/analyze_deps.py # default: ZH then EN

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/analyze_deps.py # default: ZH then EN

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
python3 scripts/analyze_deps.py # default: ZH then EN

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The advertised trigger phrases are broad natural-language requests such as "analyze ecosystem," "full scan," and "what depends on X," which can overlap with ordinary user conversation and unintentionally activate the skill. In an agentic environment, this can cause unintended repository-wide analysis, disclosure of dependency metadata, or unnecessary tool execution when the user did not explicitly request this skill.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The listed trigger conditions include broad natural-language phrases such as "full scan", "ecosystem health", and "what depends on X", which can overlap with ordinary user requests and cause the skill to activate unintentionally. In a diagnostic skill that scans many SKILL.md files and builds dependency reports, accidental invocation can waste resources, expose repository structure or metadata unnecessarily, and interfere with more appropriate skill routing.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The default-mode trigger phrases are broad enough that ordinary requests about 'ecosystem health', 'skill health', or generic analysis could activate this skill unexpectedly. Because the skill is designed to scan user skill directories and generate reports, accidental invocation can lead to unnecessary filesystem reads and writes beyond what the user clearly intended.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Query-mode triggers such as 'what depends on X' or 'core skills' are highly ambiguous and could match common conversation outside this tool's intended scope. In context, a mistaken match could cause the agent to inspect cached ecosystem data or run a fresh scan of local skill directories, exposing metadata about the user's environment or performing side effects without clear consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill documentation instructs scanning ~/.openclaw/skills/ and ~/.openclaw/workspace/skills/ and saving results to data/ecosystem.json and data/report.md, but it does not clearly warn users that local files will be read and new artifacts written. This reduces informed consent and can surprise users with privacy-sensitive indexing of all SKILL.md content and persistent output on disk.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script is presented as an analyzer/reporting utility, but in normal execution it also creates directories and writes persistent files under the user's home skill workspace (ecosystem.json and report.md). This side effect is not gated by an explicit opt-in flag or confirmation, so simply running analysis modifies the workspace and can overwrite prior generated artifacts.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

This markdown file includes a natural-language requirement that contributors must keep the SKILL.md body in English. The policy criteria flag language or locale constraints when they are imposed without user choice or a clearly documented justification, and no opt-in or rationale is provided at this line.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file explicitly states that the SKILL.md body must be in English while separately designating Chinese only for a translation file. This is a language-policy constraint in natural language, and the text does not provide contributor opt-in or a documented necessity that would exempt it.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documented default behavior is ZH then EN, which imposes a language preference unless the user supplies a flag. This is a natural-language policy concern because the skill selects a specific language ordering by default rather than asking the user or defaulting neutrally.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The JSON includes a skill named "humanizer-zh", where the "-zh" suffix indicates a Chinese-language or locale-specific variant. In this file there is no accompanying natural-language explanation that the locale is optional, user-selected, or region-justified, which can conflict with the policy against forcing a specific language or locale without opt-in.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The bilingual label text claims different health-score components than the code actually uses. ecosystem_health_score computes content and identity-based weights, while the Chinese note says the score is based on trigger words, metadata, cross-references, and cohesion, which actively misrepresents what the metric means.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

Natural-language output is constrained to EN, ZH, or BOTH, and the reporting strings are hard-coded around those locales. For a general-purpose ecosystem analyzer, this is a locale policy concern because the file forces a specific limited language set without any documented justification or broader opt-in mechanism.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script writes output files into ~/.openclaw/workspace/skills/skill-net/data automatically, without explicit confirmation or a required output argument. In this skill context, the danger is mainly unexpected filesystem modification and possible overwriting of generated reports, not a severe security breach, but it still violates least surprise and can affect workspace integrity.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The dependency is specified as PyYAML>=6.0, which allows newer unreviewed versions to be installed over time and makes builds non-reproducible. This creates supply-chain risk because a future vulnerable or malicious release could be pulled in without any change to the repository.

Content

Scanner excerpt · scripts/requirements.txt (reported line 1)May include surrounding context.

text
PyYAML>=6.0

Unverifiable Dependency: PyYAML has 8 known advisory(ies) (CVE-2019-20477 (Deserialization of Untrusted Data in PyYAML); CVE-2020-1747 (Improper Input Validation in PyYAML); CVE-2020-14343 (Improper Input Validation in PyYAML) +5 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
91% confidence
Finding

PyYAML has multiple historical advisories, and because the manifest does not pin an exact version, it is impossible to verify from this file alone whether the installed release is affected. In a skill that analyzes ecosystem relationships, YAML parsing may plausibly be used on project metadata, so if untrusted YAML is ever processed with an unsafe or outdated PyYAML version, deserialization or input-validation issues could become exploitable.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.