T09 · Insecure Skill Coding Practices
- Location
scripts/sync-project-skills.js:127- Finding
Command Injection Through Project-Controlled Skill Names and Versions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a project skill manager, but a project-controlled config can make its sync script run unintended shell commands during installation.
Install only after reviewing and fixing the sync script. Do not run it in untrusted repositories or against shared/downloaded `.openclaw-skills.json` files until skill names and versions are strictly validated and the installer uses argument-array execution instead of a shell string. Treat auto-sync, `--force`, and mutable remote config examples as unsafe defaults that need explicit review and approval.
scripts/sync-project-skills.js:127Command Injection Through Project-Controlled Skill Names and Versions
references/faq.md:174Unsafe Supply-Chain Guidance Bypasses Suspicious-Package Warnings and Trusts Mutable Remote Configuration
The documentation materially overstates what the skill does and how safely it does it, including claims about automatic loading, source support, priority handling, version locking, and isolation that are not actually implemented. This can mislead users into trusting security and isolation properties they do not have, increasing the chance of unsafe installation, cross-project contamination, or unreviewed remote skill use.
Referenced artifact was not completely inspected
node scripts/validate-config.js
Referenced artifact was not completely inspected
node scripts/validate-config.js
Referenced artifact was not completely inspected
node scripts/validate-config.js
Referenced artifact was not completely inspected
node scripts/validate-config.js
Referenced artifact was not completely inspected
node scripts/validate-config.js
Referenced artifact was not completely inspected
node scripts/validate-config.js
Referenced artifact was not completely inspected
node scripts/validate-config.js
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
rm -rf ~/.openclaw/skills/
### Q13: 支持哪些技能来源?
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
rm -rf ~/.openclaw/skills/
### Q13: 支持哪些技能来源?
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
rm -rf ~/.openclaw/skills/
### Q13: 支持哪些技能来源?
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
node scripts/sync-project-skills.js --force
# 方法 2:删除缓存文件
rm ~/.openclaw/cache/skills.json
# 方法 3:修改配置 TTL
{
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
node scripts/sync-project-skills.js --force
# 方法 2:删除缓存文件
rm ~/.openclaw/cache/skills.json
# 方法 3:修改配置 TTL
{
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
git add .openclaw-skills.json
git commit -m "Add skill configuration for frontend development"
git push
完成! ✅ 现有项目现在有了技能配置。
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).
git add .openclaw-skills.json
git commit -m "Add skill configuration for frontend development"
git push
完成! ✅ 现有项目现在有了技能配置。
The README advertises automatic installation and syncing of skills when entering a project, which is a system-changing action triggered by project context rather than an explicit user command. In a tool that supports multiple sources including git and URL, this increases supply-chain and surprise-execution risk because users may enter an untrusted repository and unintentionally pull or install skills without a clear warning or consent step.
The skill describes behavior that can inspect environment context and drive filesystem/network-affecting operations, but it does not declare any explicit tool scope such as allowed tools or permissions. That omission weakens user understanding and policy enforcement, making it easier for the skill to operate with broader-than-expected capabilities in environments that rely on metadata for safety decisions.
The skill body switches to Chinese for the primary instructions and explanations, while the file does not offer alternative language options or indicate that the skill is intentionally region- or locale-specific. This can violate a language/locale policy requiring user choice or explicit justification.
The skill promotes automatic detection and installation of missing skills but does not clearly warn that this causes local file changes and may fetch content from configured sources. Users may trigger downloads and installation side effects without informed consent, which is risky when skills are executable instructions from potentially untrusted origins.
The documentation explicitly supports URL-based skill downloads without warning about remote content trust, tampering, or supply-chain risks. Fetching and installing skills from arbitrary URLs can introduce malicious or modified skill content into the local environment if integrity and provenance are not verified.
This markdown file uses a single fixed language throughout and does not state that Chinese is optional or intended for a specific locale. Under the policy rule for natural-language violations, forcing a specific language without user opt-in is reportable.
The example enables automatic synchronization both when entering a project and when a skill is missing, which can cause remote or local skill resolution to occur without an explicit user approval step. In the context of a skill loader that supports registry, filesystem, git, and URL-like sources, broad auto-sync triggers increase the chance of unintentionally fetching or activating untrusted code when a project is opened or when dependency names are manipulated.
The FAQ advises users to bypass a suspicious-skill warning with --force and gives no caution about the trust implications. In the context of a skill manager that installs project-scoped skills, this normalizes overriding security checks and can directly lead to installing malicious skills from untrusted sources.
The uninstall instructions include rm -rf ~/.openclaw/skills/<skill-name>, and the cache troubleshooting section includes rm ~/.openclaw/cache/skills.json, but the document provides no caution that these commands delete local data and may be irreversible. For markdown guidance, destructive operations that affect user data or system state should be accompanied by an explicit warning.
The table states git and url sources are 'planned' (计划中), indicating they are not implemented. However, the later advanced usage section provides a concrete project configuration using type: "git" as if it were supported, which directly contradicts the earlier documentation about implementation status.