低风险 — 风险评分 18/100
上次扫描:21 小时前 重新扫描
18 /100
zentao-api
调用禅道(ZenTao)RESTful API v2.0 完成用户请求,覆盖项目集、产品、项目、执行、需求、Bug、任务、测试用例等20个模块的增删改查及状态流转操作
A legitimate ZenTao API wrapper skill with documented filesystem token caching and shell script execution, carrying minor security concerns around plaintext password exposure in process arguments.
技能名称zentao-api
分析耗时34.1s
引擎pi
可以安装
Accept for use. Consider warning users that passwords appear in process arguments and that cached tokens are stored in plaintext on disk.

安全发现 3 项

严重性 安全发现 位置
中危
Plaintext password visible in process arguments 凭证窃取
When ZENTAO_PASSWORD is provided via environment variables, the bash script passes it directly to curl's -d argument. This causes the password to appear in /proc/PID/cmdline and in process listings (ps aux), exposing it to other processes or users on shared systems.
-d "{\"account\": \"${ZENTAO_ACCOUNT}\", \"password\": \"${ZENTAO_PASSWORD}\"}"
→ Use a here-document or pipe to avoid password in command line, e.g., echo '{"account":"...","password":"..."}' | curl -s -X POST -H 'Content-Type: application/json' -d @- ...
scripts/get-token.sh:74
低危
Permanent token cached in plaintext on filesystem 敏感访问
The script writes ZENTAO_TOKEN (which is permanent per ZenTao design), ZENTAO_URL, and ZENTAO_ACCOUNT to ~/.zentao-token.json in plaintext. If the filesystem is compromised, these credentials can be reused without re-authentication.
fs.writeFileSync(cachePath, JSON.stringify({ token, url, account }, null, 2));
→ File permissions should be set to 600 (chmod 600 ~/.zentao-token.json). Consider noting this in documentation.
scripts/get-token.sh:81
低危
SKILL.md does not disclose credential caching to disk in the prominent configuration section 文档欺骗
The configuration section of SKILL.md describes environment variable and direct token usage but only mentions '写入 ~/.zentao-token.json' in passing within the auth flow section rather than prominently in the configuration table. A user reading only the top of the document may not realize credentials are persisted to disk.
首次登录后 `ZENTAO_URL`、`ZENTAO_TOKEN`、`ZENTAO_ACCOUNT` 写入 `~/.zentao-token.json`,后续无需重复设置
→ Add ~/.zentao-token.json to the configuration table with a note about automatic persistence.
SKILL.md:13
资源类型声明权限推断权限状态证据
文件系统 WRITE WRITE ✓ 一致 SKILL.md writes ~/.zentao-token.json
命令执行 WRITE WRITE ✓ 一致 SKILL.md runs eval "$(bash scripts/get-token.sh)"
网络访问 READ READ ✓ 一致 REST API calls to ZENTAO_URL/api.php/v2 endpoints
环境变量 READ READ ✓ 一致 Reads ZENTAO_URL, ZENTAO_TOKEN, ZENTAO_ACCOUNT, ZENTAO_PASSWORD from env
剪贴板 NONE NONE
浏览器 NONE NONE
数据库 NONE NONE
技能调用 NONE NONE
3 项发现
🔗
中危 外部 URL 外部 URL
http://zentao.example.com
SKILL.md:14
🔗
中危 外部 URL 外部 URL
https://www.zentao.net/book/api/2309.html
SKILL.md:207
🔗
中危 外部 URL 外部 URL
https://www.zentao.net/book/api/1397.html
SKILL.md:208

目录结构

3 文件 · 31.2 KB · 745 行
Markdown 2f · 644L Shell 1f · 101L
├─ 📁 scripts
│ └─ 🔑 get-token.sh Shell 101L · 4.4 KB
├─ 📝 api-reference.md Markdown 436L · 16.8 KB
└─ 📝 SKILL.md Markdown 208L · 9.9 KB

安全亮点

✓ No obfuscation or base64-encoded payloads found
✓ No unauthorized network exfiltration or C2 communication
✓ No access to sensitive paths outside the documented cache file (~/.zentao-token.json)
✓ No credential harvesting beyond what is necessary for the ZenTao API
✓ API operations are limited to the declared ZenTao REST API endpoints only
✓ No hidden instructions or prompt injection detected
✓ Shell script dependencies (curl, node) are standard tools with no malicious behavior
✓ No supply chain risks identified; no external dependencies or package managers used