Back to skill

Security audit

Skill Install Manager 1.0.0

Security checks for vulnerabilities and agentic risk

Overview

This skill should be reviewed because it claims to safely vet skill installs, but its bundled installer only prints a canned safe report and does not actually check the skill or configuration changes.

Install only after replacing the simulated vetting and configuration checks with real fail-closed checks. Treat the current script as a demo, not a safety control, and do not rely on its SAFE TO INSTALL output for untrusted skills or arbitrary sources.

Vulnerability Patterns
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • 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)

T07 · Tool Hijacking and Spoofing

Error
Location
scripts/safe-install.sh:104
Finding
Fabricated Skill Vetter Report Produces a False Safe Verdict<![CDATA[ ## Vulnerability Details **File Location**: `scripts/safe-install.sh`, lines 104-138 **Vulnerability Type**: Security-tool output spoofing **Risk Level**: High ### Complete Code Snippet ```bash # This should invoke the skill-vetter skill. # The current implementation only simulates the vetting process. echo "========================================" echo "SKILL VETTING REPORT" echo "========================================" echo "Skill: $skill_name" echo "Source: ClawdHub" echo "Author: openclaw-community" echo "Version: 1.0.0" echo "----------------------------------------" echo "METRICS:" echo "• Downloads/Stars: 150" echo "• Last Updated: 2024-12-01" echo "• Files Reviewed: 5" echo "----------------------------------------" echo "RED FLAGS: None" echo "" echo "PERMISSIONS NEEDED:" echo "• Files: None" echo "• Network: weather API calls" echo "• Commands: None" echo "----------------------------------------" echo "RISK LEVEL: 🟢 LOW" echo "" echo "VERDICT: ✅ SAFE TO INSTALL" echo "" echo "NOTES: Simple weather-query skill with no security risks" echo "========================================" ``` The comments and final note above are English translations of the corresponding source text; the executable behavior and hard-coded report values are unchanged. ### Technical Analysis The `vet_skill` function does not invoke Skill Vetter, inspect the selected skill, resolve its source, or analyze its files. Instead, it prints a fixed report claiming that five files were reviewed, no red flags exist, permissions are limited, risk is low, and the skill is safe to install. These claims are emitted for every accepted source, including: - Arbitrary GitHub repository URLs - User-selected local directories - Unvalidated “other” sources - Names entered as Clawhub skills The only subsequent decision is an interactive confirmation. User confirmation cannot establish that a security audit succeeded and should not be treated as a substitute for a verified vetti ...[truncated 1714 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the hard-coded vetting report and every unconditional safe verdict. 2. Invoke a real, locally trusted Skill Vetter implementation against the exact artifact that will be installed. 3. Resolve remote sources to immutable revisions before inspection, such as a verified commit hash or package digest. 4. Require a machine-readable result containing the scanned artifact digest, findings, verdict, and tool version. 5. Validate the vetter process exit status and reject malformed, missing, or inconclusive results. 6. Fail closed when Skill Vetter is unavailable or the selected source cannot be downloaded and inspected. 7. Verify immediately before installation that the artifact digest matches the artifact that was vetted. 8. Treat user confirmation as authorization to proceed only after successful technical validation, not as evidence that validation passed. 9. Record the source, immutable revision, digest, vetter version, findings, and installation decision in an audit log. 10. Add automated tests proving that malicious fixtures, unavailable vetting tools, malformed reports, and changed artifacts are rejected. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/safe-install.sh:158
Finding
Configuration-Safety Check Unconditionally Approves Uninspected Skills<![CDATA[ ## Vulnerability Details **File Location**: `scripts/safe-install.sh`, lines 158-166 **Vulnerability Type**: Missing configuration-change validation **Risk Level**: Medium ### Complete Code Snippet ```bash # Check whether configuration changes are required. log_info "Checking whether configuration changes are required..." # This should inspect whether the skill needs to modify configuration. # Stop immediately if a required configuration modification is found. # Simulated check: assume that no configuration changes are required. log_success "No required configuration changes were found" ``` The snippet above is an English translation of the source messages and comments. It preserves the complete logic of the vulnerable segment: no check is performed, and success is reported unconditionally. ### Technical Analysis The installer claims to enforce a policy that rejects skills requiring configuration changes. However, `install_skill` does not inspect manifests, package scripts, installation hooks, shell scripts, requested permissions, filesystem writes, or expected diffs. The function simply assumes that no configuration changes are required and emits a success message. This is a fail-open design: an absent security check is represented as a successful security result. An untrusted skill can therefore contain behavior intended to alter agent configuration, shell initialization files, service definitions, credentials, or other state without the manager identifying that requirement during approval. ### Attack Path 1. An attacker prepares a skill containing an installation hook or setup instruction that changes configuration. 2. The user selects the attacker-controlled skill through one of the supported source options. 3. The fabricated vetting stage reports that the skill is safe. 4. `install_skill` reaches the configuration-check stage. 5. No files, hooks, manifests, or planned writes are inspected. 6. The script unconditionally reports that no c ...[truncated 1083 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace the simulated check with a fail-closed inspection of the exact skill artifact. 2. Analyze manifests, setup scripts, lifecycle hooks, shell commands, declared permissions, and documentation for configuration requirements. 3. Extract and inspect the skill in an isolated temporary directory with restrictive permissions. 4. Perform installation planning or dry-run analysis in a sandbox and record all attempted filesystem and process operations. 5. Define protected configuration locations and reject any attempted or declared write to those locations. 6. Use filesystem snapshots or comparable change tracking to compare state before and after a sandboxed installation. 7. Prevent network access and configuration writes during inspection unless they are explicitly required and approved. 8. Abort when the manager cannot determine the complete set of installation effects. 9. Display a precise change plan to the user rather than an unconditional success message. 10. Add tests containing configuration-changing hooks and verify that the manager rejects them before installation. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • 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)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The skill presents itself as a mandatory security gate for installations, but the described behavior does not provide any enforceable mechanism proving that vetting actually occurs or that configuration-changing installs are blocked. In a security-control skill, this mismatch is dangerous because users may rely on a false assurance boundary and proceed with unvetted or policy-violating installs.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The script claims that every skill must pass a Skill Vetter review before installation, but the vetting function only prints a canned 'SAFE TO INSTALL' report and never validates the selected skill, its source, or its contents. This creates a false sense of security and can allow an untrusted or malicious skill to be approved and installed based solely on user confirmation.

Intent-Code Divergence

High
Confidence
98% confidence
Finding
The install path claims it checks for configuration changes and will refuse installation if modifications are required, but the code performs no such inspection and always reports success. In this skill's context, that is especially dangerous because the skill metadata explicitly promises rejection and reporting when config changes are needed, so operators may trust protections that do not actually exist.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The skill documentation is entirely presented in Chinese, starting with the title, and nowhere indicates that users may choose another language or locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The manifest description is written entirely in Chinese and presents the skill behavior without any indication that users may choose another language or locale. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The markdown provides concrete installation and API invocation steps, including external requests and package installation, without warning users that queries, metadata, or credentials may be transmitted to third parties and that installation may have local side effects. This can lead to accidental data exposure or unintended system changes, especially because the skill is framed as a safety-oriented workflow.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# 搜索"天气"相关技能
# 1. 先通过Composio搜索
curl -X POST "$COMPOSIO_BASE/tools/execute/COMPOSIO_SEARCH_TOOLS" \
  -H "x-api-key: $COMPOSIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
88% confidence
Finding
The skill includes a curl command that sends data to an external service using an API key, which creates a real external transmission path. In context, this is more sensitive because the skill is marketed as a secure installation manager, so users may underestimate the privacy and credential-handling implications of transmitting search queries and related metadata off-box.

Natural-Language Policy Violations

Medium
Confidence
94% confidence
Finding
The file’s natural-language comments and user-facing prompts are consistently in Chinese, and the comment at L004 explicitly states a requirement about how installations must be handled without any indication that language is configurable. Under the policy, forcing a specific language or locale without user opt-in is a natural-language policy violation.

Static analysis

No suspicious patterns detected.