扫描报告
20 /100
cms-push-skill
CMS Skill 推送工具 — 发布、更新 Skill 到平台,同步到 ClawHub 和 GitHub,包含问题反馈与状态管理
Legitimate CMS skill publishing and issue management tool with consistent doc-to-code alignment, but SSL certificate verification is globally disabled across all API calls, creating MITM exposure.
可以安装
Replace all verify=False / ssl.CERT_NONE bypasses with proper certificate verification or at minimum a configurable opt-in flag. Pin dependencies to specific versions. Add the missing __init__.py to scripts/issue_report/
安全发现 5 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 中危 | SSL/TLS certificate verification globally disabled | scripts/skill-management/register_skill.py:45 |
| 低危 | No dependency pinning | SKILL.md:4 |
| 低危 | Missing __init__.py in scripts/issue_report/ | SKILL.md:82 |
| 提示 | API base URL hardcoded without override validation | Multiple scripts:1 |
| 提示 | GitHub Issue template files are static assets, not executed | github-issue-templates/:1 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | READ | READ | ✓ 一致 | pack_skill.py reads skill_dir to build ZIP |
| 网络访问 | READ | READ | ✓ 一致 | All scripts make outbound HTTPS requests to declared endpoints |
| 命令执行 | NONE | NONE | — | No subprocess/shell execution found |
| 环境变量 | READ | READ | ✓ 一致 | Scripts read XG_USER_TOKEN, access-token, ACCESS_TOKEN — all declared in SKILL.m… |
| 技能调用 | NONE | NONE | — | No skill_invoke capability used |
4 项发现
中危 外部 URL 外部 URL
https://skills.mediportal.com.cn scripts/issue_report/list_issues.py:20 中危 外部 URL 外部 URL
https://skills.mediportal.com.cn) scripts/issue_report/report_issue.py:202 中危 外部 URL 外部 URL
https://wry-manatee-359.convex.site/api/v1/download?slug= scripts/skill-management/publish_skill.py:66 中危 外部 URL 外部 URL
https://up-z2.qiniup.com/ scripts/skill-management/upload_to_qiniu.py:44 目录结构
22 文件 · 63.3 KB · 1851 行 Python 9f · 1448L
YAML 12f · 281L
Markdown 1f · 122L
├─
▾
github-issue-templates
│ ├─
bug_report.yml
YAML
│ ├─
config.yml
YAML
│ ├─
documentation_issue.yml
YAML
│ ├─
feature_request.yml
YAML
│ ├─
incident_report.yml
YAML
│ ├─
integration_issue.yml
YAML
│ ├─
performance_issue.yml
YAML
│ ├─
question_support.yml
YAML
│ ├─
refactor_proposal.yml
YAML
│ ├─
regression_report.yml
YAML
│ ├─
roadmap_proposal.yml
YAML
│ └─
security_issue.yml
YAML
├─
▾
scripts
│ ├─
▾
issue_report
│ │ ├─
list_issues.py
Python
│ │ ├─
report_issue.py
Python
│ │ └─
update_issue.py
Python
│ └─
▾
skill-management
│ ├─
delete_skill.py
Python
│ ├─
pack_skill.py
Python
│ ├─
publish_skill.py
Python
│ ├─
register_skill.py
Python
│ ├─
update_skill.py
Python
│ └─
upload_to_qiniu.py
Python
└─
SKILL.md
Markdown
依赖分析 1 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
requests | * | pip | 否 | Version not pinned; used in skill-management scripts but not in issue_report scripts which use stdlib urllib only |
安全亮点
✓ No subprocess/shell execution — all operations use Python standard library or the requests library
✓ No credential exfiltration — XG_USER_TOKEN is only sent to declared platform API endpoints (skills.mediportal.com.cn)
✓ No sensitive path access (~/.ssh, ~/.aws, .env files) — scripts operate on explicitly provided skill directories and API tokens
✓ No base64/encoded payloads piped to shell, no eval(), no reverse shells, no C2 indicators
✓ Doc-to-code alignment is strong — all 9 capabilities documented in SKILL.md map directly to implemented scripts
✓ External URLs are all explicitly documented in SKILL.md (skills.mediportal.com.cn, qiniup.com, convex.site)
✓ No hidden functionality — no HTML comments with hidden instructions, no steganography, no obfuscation
✓ Error handling is appropriate — exceptions are caught, reported, and re-raised without silent data exfiltration
✓ Token access is read-only — credentials are used for authentication only, never logged or transmitted outside declared endpoints