T09 · Insecure Skill Coding Practices
- Location
scripts/sync.cjs:250- Finding
Shell Command Injection Through Skill Names and Metadata
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill can automatically publish local skills and push Git repositories, but its advertised safety controls are incomplete or not enforced.
Review carefully before installing. Use it only in a controlled skills workspace, assume it may publish and push any synchronized skill repository, avoid unattended cron use until confirmation and dry-run controls are implemented, and inspect repositories for secrets before running it.
scripts/sync.cjs:250Shell Command Injection Through Skill Names and Metadata
scripts/sync.cjs:250Unrestricted Repository Publication May Expose Sensitive Files
scripts/sync.cjs:391Documented and Configured Safety Controls Are Not Enforced
Referenced artifact was not completely inspected
- 包含 `SKILL.md` 文件
Referenced artifact was not completely inspected
- 包含 `SKILL.md` 文件
Referenced artifact was not completely inspected
- 包含 `SKILL.md` 文件
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.
},
"gitSettings": {
"autoPush": true,
"commitMessageTemplate": "Update skill: {name} v{version}",
"branch": "main"
},
"clawhubSettings": {
The skill is explicitly designed to auto-publish to ClawHub and auto-commit/push to GitHub, which are external side effects affecting remote systems. Without a prominent upfront warning and explicit consent model, users may enable the skill without appreciating that local changes can be published publicly or pushed to repositories automatically.
The configuration example sets requireConfirmation to false while enabling automatic publishing, creating an unattended publication path to external services. In a skill that scans for changed content and syncs automatically, this increases the chance of accidental, unauthorized, or harmful publication of modified skills, especially if a local skill is tampered with.
The security section asserts the skill only syncs the skills directory, but the same document also states it writes status and log files under a separate memory path outside that directory. This is a documentation-level safety misrepresentation: it can mislead users about the skill's write scope and reduce their ability to assess operational risk accurately.
The script automatically publishes skills to ClawHub and pushes commits to GitHub once changes are detected, without any interactive confirmation, dry-run mode, or explicit safety gate immediately before the remote actions. This can cause unintended external publication of modified content, accidental disclosure of local work, or irreversible remote changes if the scan or configuration includes a skill the user did not intend to sync.
The cron example hard-codes a requirement that the report be formatted in Chinese. This is a natural-language locale constraint presented without any indication that the user can choose another language, which conflicts with the policy against forcing a language without opt-in.
The code formats the report timestamp using the zh-CN locale and Asia/Shanghai timezone unconditionally. This imposes a specific locale preference on all users without offering a choice or documenting a justified regional restriction.