Back to skill

Security audit

AI Agent Skills Manager - 智能体技能管理工具

Security checks for vulnerabilities and agentic risk

Overview

The skill is an installer for OpenClaw skills, but it needs Review because it installs unverified third-party skill content into an auto-loaded agent directory and uses an unsafe shared temporary path.

Install only after reviewing the upstream repository and the copied skill contents. Prefer a pinned commit or signed release, avoid the sudo /usr/local/bin path unless you trust the script and need system-wide access, and clear or replace the shared /tmp/pskoett-ai-skills workflow with a private temporary directory before use.

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)

T08 · Insecure Dependencies

Warning
Location
manager.sh:68
Finding

Unpinned Remote Agent Skills Are Installed into an Automatically Loaded Directory

Content
View full analysis
&1 | head -3 fi cp -r "$SOURCE_DIR/skills/$skill" "$SKILLS_DIR/" ``` `skill-installer.sh:184-192`: ```bash # Clone if source doesn't exist if [[ ! -d "$SOURCE_DIR" ]]; then echo "" echo -e "${CYAN}克隆源仓库...${NC}" # 使用安全的 TLS 连接克隆 GitHub(不使用 GIT_SSL_NO_VERIFY) git clone --depth 1 https://github.com/pskoett/pskoett-ai-skills.git "$SOURCE_DIR" 2>&1 | head -5 fi # Copy skill cp -r "$skill_path" "$dest_path" ``` `SKILL.md:61-70`: ```bash # 克隆源仓库 git clone https://github.com/pskoett/pskoett-ai-skills.git /tmp/pskoett-ai-skills # 手动安装技能 cp -r /tmp/pskoett-ai-skills/skills/simplify-and-harden ~/.openclaw/skills/ cp -r /tmp/pskoett-ai-skills/skills/plan-interview ~/.openclaw/skills/ cp -r /tmp/pskoett-ai-skills/skills/intent-framed-agent ~/.openclaw/skills/ cp -r /tmp/pskoett-ai-skills/skills/context-surfing ~/.openclaw/skills/ cp -r /tmp/pskoett-ai-skills/skills/self-improvement ~/.openclaw/skills/ ``` ### Technical Analysis The installation flow clones the current head of a third-party GitHub repository without pinning an audited commit, verifying a signed release, or checking file hashes. The resulting content is copied directly into `~/.openclaw/skills`, which the project documentation states is automatically loaded by OpenClaw. TLS protects the network connection but does not ensure that the repository's current contents are the same contents that were previously reviewed. Repository-owner compromise, malicious upstream changes, or unauthorized release modificatio ...[truncated 1708 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
skill-installer.sh:160
Finding

Predictable Shared Temporary Directory Allows Local Skill Content Injection

Content
View full analysis
&1 | head -3 fi cp -r "$SOURCE_DIR/skills/$skill" "$SKILLS_DIR/" ``` `skill-installer.sh:16-18`: ```bash SKILLS_DIR="$HOME/.openclaw/skills" SOURCE_DIR="/tmp/pskoett-ai-skills" LOG_FILE="$HOME/.ai_agent_skills/install.log" ``` `skill-installer.sh:160-192`: ```bash install_skill() { local skill=$1 local skill_path="${SOURCE_DIR}/skills/$skill" local dest_path="${SKILLS_DIR}/${skill}" echo "" echo -e "${CYAN}正在安装:${GREEN}$skill${NC}" echo " 来源:$skill_path" echo " 目标:$dest_path" if [[ ! -d "$skill_path" ]]; then echo -e "${RED}错误:技能目录不存在:$skill_path${NC}" return 1 fi if [[ -d "$dest_path" ]]; then echo -e "${YELLOW}警告:技能已存在,将覆盖${NC}" read -r -p " 是否继续?(y/N): " confirm if [[ ! "$confirm" =~ ^[Yy]$ ]]; then echo -e "${YELLOW}已取消${NC}" return 0 fi fi # Clone if source doesn't exist if [[ ! -d "$SOURCE_DIR" ]]; then echo "" echo -e "${CYAN}克隆源仓库...${NC}" # 使用安全的 TLS 连接克隆 GitHub(不使用 GIT_SSL_NO_VERIFY) git clone --depth 1 https://github.com/pskoett/pskoett-ai-skills.git "$SOURCE_DIR" 2>&1 | head -5 fi # Copy skill cp -r "$skill_path" "$dest_path" ``` ### Technical Analysis Both scripts use the fixed, predictable path `/tmp/pskoett-ai-skills`. The system-wide `/tmp` directory is generally shared am ...[truncated 2737 chars]
Remediation
View remediation
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (16)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The README promotes automatic cloning and installation of skills from GitHub but does not warn users that this downloads third-party content and modifies the local environment. In the context of an agent skill manager, this increases supply-chain and unintended code-execution risk because users may treat skill installation as harmless metadata import rather than installation of executable logic.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The quick-start and distribution guidance encourages users to run and share an installer shell script without any caution about executing unreviewed scripts. Because shell scripts can make arbitrary system changes, this is dangerous in a skill-distribution context where recipients may execute the installer based solely on README trust.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The documented installation path instructs users to copy an executable into /usr/local/bin with sudo, which makes persistent system-level changes without any warning, verification guidance, or rollback instructions. In a skill whose purpose is software installation/management, omitting those cautions increases the chance that users run privileged commands on unreviewed content and unintentionally alter trusted execution paths.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
93% confidence
Finding

This line explicitly instructs running sudo cp to place a script into a system-wide executable directory, requiring elevated privileges for an unverified artifact. If the script is malicious or tampered with, this helps establish trusted persistence and broadens the blast radius beyond the current user.

Content

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

方法 2: 系统安装

bash
sudo cp ~/Desktop/skill-installer.sh /usr/local/bin/
sudo chmod +x /usr/local/bin/skill-installer
skill-installer

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
92% confidence
Finding

This command uses sudo chmod to mark the installed file executable in a privileged system path, completing setup of a root-assisted system-wide command. In context, the danger is not chmod itself but that the documentation normalizes elevated installation of a script whose provenance and contents are not verified in the instructions.

Content

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

bash
sudo cp ~/Desktop/skill-installer.sh /usr/local/bin/
sudo chmod +x /usr/local/bin/skill-installer
skill-installer

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest describes a general-purpose tool to install and manage OpenClaw skill packages with an interactive interface. In practice, the code is narrowly tied to one external repository and one predefined list of skills, which is materially more specific than the stated behavior and omits broader 'management' functionality.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script performs network access and writes into the user's OpenClaw skills directory without an explicit warning, confirmation, or dry-run mode. In the context of a skill manager, this is riskier because it installs executable/prompts/configuration content from a third-party repository into an auto-loaded location, increasing the chance of unintended trust in remote content and persistence of potentially unsafe skills.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This shell script presents its interactive prompts and usage guidance in Chinese, such as the installation-selection instructions, without offering an opt-in or alternative locale. That is a natural-language locale policy concern because the skill effectively constrains user interaction to a specific language with no documented choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file is natural-language content, so language policy applies. The guide consistently uses Chinese throughout and does not indicate that the skill or documentation is intended only for a Chinese-speaking or region-specific audience, nor does it offer an alternative language option.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The document content is presented in Chinese, and there is no indication that users can choose another language or that the language restriction is required for a region-specific purpose. This can violate language/locale policy when a skill effectively forces one language without user opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The top-level description presents the skill in a mixed-language format, which can impose a language/locale expectation on users without explicit opt-in or explanation. The policy requires avoiding forced language behavior unless users are given a choice or the locale constraint is documented and justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The direct clone workflow copies files from a remote repository into the user's ~/.openclaw/skills directory without warning that this changes the local agent skill set and may introduce untrusted code or prompts. Because the skill manager is specifically for installing agent skills, this context makes silent modification of the runtime environment more security-relevant than generic documentation examples.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

Nearly all visible prompts, help text, and skill descriptions are presented only in Chinese, which imposes a language choice on all users. The file does not offer localization, opt-in language selection, or any justification that this is a region-specific tool.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The interactive menu labels option 2 as showing installed skills, which implies a view of what is currently present under the OpenClaw skills directory. However, selecting option 2 calls show_skills, which prints a fixed catalog of available skills rather than the installed set.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The inline comment says the script will clone when the source does not exist, implying it ensures the needed skill source is available. In practice, earlier code already errors out if the specific skill directory is missing, so this clone logic may never remedy the missing skill path and does not match the apparent intent of the comment.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The manifest describes this skill as an installation and management tool for OpenClaw skills, with promotional use mentioned only at a high level. The code goes further by presenting explicit distribution/promotion guidance and calls to share and publish the tool, which is not part of core skill installation or management behavior.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.