T09 · Insecure Skill Coding Practices
- Location
scripts/bug-fix-flow.mjs:317- Finding
Shell command injection through untrusted callback and repository values
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This DevOps skill is broadly aligned with Yunxiao automation, but it includes high-impact repository and deployment actions with unsafe credential, shell, and persistence behavior.
Review this skill carefully before installing. Use only least-privilege test credentials, rotate or revoke any exposed or generated tokens/SSH keys, avoid running it as root, and do not enable the automated bug-fix or one-click merge/deploy flows until the hardcoded token, shell command construction, broad SSH enrollment, bypassPermissions use, and shared temporary state are fixed.
scripts/bug-fix-flow.mjs:317Shell command injection through untrusted callback and repository values
scripts/bug-fix-flow.mjs:353Untrusted repository automation runs Claude Code with permission checks disabled
scripts/bug-fix-flow.mjs:183Automatic organization-wide SSH key creation and enrollment violates least privilege
scripts/bug-fix-flow.mjs:173Predictable shared temporary state permits state tampering and privileged file clobbering
The documented purpose does not accurately describe the skill's real behavior: it includes Feishu messaging, local credential/config reads, background polling, and state-changing DevOps actions such as merge, pipeline trigger, and deployment workflow execution. This mismatch undermines informed consent and can cause an agent to invoke the skill in contexts where the user did not intend notification, credential usage, or production-impacting actions.
The skill is designed to load secrets from .env.local, a local file containing tokens and organization identifiers, and prioritizes local file-based secret access in its configuration flow. In an agent context this increases the chance that the skill reads sensitive credentials from the workspace or user environment without clear scoping, especially when combined with shell and network capabilities.
快速配置(复制示例文件):
cp .env.local.example .env.local
# 编辑 .env.local,填入你的 token 和 org ID
The skill requires a Yunxiao personal access token and is built to consume that credential for broad API actions including merges, pipeline triggers, and workflow execution. This is sensitive credential usage; if the skill is over-triggered or insufficiently permissioned, the token's authority can be abused to alter repositories, pipelines, and deployments.
**必须配置:**
| 环境变量 | 说明 |
|---------|------|
| `YUNXIAO_TOKEN` | 云效 Personal Access Token(个人设置 → Access Token) |
| `YUNXIAO_ORG_ID` | 云效组织 ID(URL 中 `/organizations/` 后的字符串) |
**可选配置:**
Referenced artifact was not completely inspected
| ☀️ 每日站会 | "今天有什么任务"、"站会" | `scripts/daily-standup-card.mjs` |
Referenced artifact was not completely inspected
| ☀️ 每日站会 | "今天有什么任务"、"站会" | `scripts/daily-standup-card.mjs` |
Referenced artifact was not completely inspected
| 查看我的工作项 | "查下我的工作项"、"我负责什么" | `scripts/my-workitems-card.mjs` |
Referenced artifact was not completely inspected
| 查看我的工作项 | "查下我的工作项"、"我负责什么" | `scripts/my-workitems-card.mjs` |
Referenced artifact was not completely inspected
| 查看我的工作项 | "查下我的工作项"、"我负责什么" | `scripts/my-workitems-card.mjs` |
Referenced artifact was not completely inspected
| 查看工作项详情 | 粘贴云效 URL 或"看下 UHZM-5" | `scripts/workitem-card.mjs <id>` |
Referenced artifact was not completely inspected
| 查看工作项详情 | 粘贴云效 URL 或"看下 UHZM-5" | `scripts/workitem-card.mjs <id>` |
Referenced artifact was not completely inspected
| 查看工作项详情 | 粘贴云效 URL 或"看下 UHZM-5" | `scripts/workitem-card.mjs <id>` |
Referenced artifact was not completely inspected
| 查看工作项详情 | 粘贴云效 URL 或"看下 UHZM-5" | `scripts/workitem-card.mjs <id>` |
Referenced artifact was not completely inspected
| 创建工作项 | "帮我建个需求/任务/缺陷" | `scripts/create-workitem-flow.mjs` |
Referenced artifact was not completely inspected
| 创建工作项 | "帮我建个需求/任务/缺陷" | `scripts/create-workitem-flow.mjs` |
Referenced artifact was not completely inspected
| 创建工作项 | "帮我建个需求/任务/缺陷" | `scripts/create-workitem-flow.mjs` |
Referenced artifact was not completely inspected
| 创建工作项 | "帮我建个需求/任务/缺陷" | `scripts/create-workitem-flow.mjs` |
Referenced artifact was not completely inspected
| 工作项关联 | "把这个需求关联到任务"、"看关联项" | `scripts/workitem-relation-flow.mjs <id>` |
Referenced artifact was not completely inspected
| 工作项关联 | "把这个需求关联到任务"、"看关联项" | `scripts/workitem-relation-flow.mjs <id>` |
Referenced artifact was not completely inspected
| ⏱️ 工时打卡 | "打卡"、"记工时"、"登记今日工时" | `scripts/effort-checkin-card.mjs` |
Referenced artifact was not completely inspected
| ⏱️ 工时打卡 | "打卡"、"记工时"、"登记今日工时" | `scripts/effort-checkin-card.mjs` |
Referenced artifact was not completely inspected
| 修复 Bug | "帮我修复这个 bug"、"修 UHZM-5" | `scripts/bug-fix-flow.mjs <id>` |
Referenced artifact was not completely inspected
| 修复 Bug | "帮我修复这个 bug"、"修 UHZM-5" | `scripts/bug-fix-flow.mjs <id>` |
Referenced artifact was not completely inspected
| 修复 Bug | "帮我修复这个 bug"、"修 UHZM-5" | `scripts/bug-fix-flow.mjs <id>` |
Referenced artifact was not completely inspected
| 修复 Bug | "帮我修复这个 bug"、"修 UHZM-5" | `scripts/bug-fix-flow.mjs <id>` |
Referenced artifact was not completely inspected
| 📝 最近提交 | "谁改了代码"、"看最近 commit" | `scripts/commit-activity-card.mjs` |
Detected: suspicious.dangerous_exec, suspicious.env_credential_access, suspicious.potential_exfiltration