扫描报告
18 /100
xgjk-skill
玄关 Skill 全生命周期工具 — 发现平台已有 Skill、按 XGJK 协议创建新 Skill、发布/更新/下架 Skill
A legitimate skill lifecycle management platform tool with minor security issues (SSL bypass, unpinned requests dependency) but no malicious behavior detected.
可以安装
Pin the requests library to a specific version and consider re-enabling SSL certificate verification for production use. Add missing tool declarations to SKILL.md.
安全发现 3 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 中危 | Unpinned 'requests' dependency in work-report scripts 供应链 | scripts/work-report/send_report_with_confirm.py:34 |
| 低危 | tools_provided only declares one tool, but skill offers 10+ 文档欺骗 | SKILL.md:5 |
| 低危 | SSL certificate verification disabled in all HTTP clients 敏感访问 | scripts/fetch_api_doc.py:38 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 网络访问 | READ | READ | ✓ 一致 | SKILL.md:fetch_api_doc + all scripts use urllib/requests |
| 文件系统 | NONE | WRITE | ✓ 一致 | SKILL.md workflows describe ZIP creation but only fetch_api_doc is in tools_prov… |
| 命令执行 | NONE | NONE | — | No subprocess/shell invocation; Python scripts use stdlib urllib |
| 环境变量 | NONE | READ | ✓ 一致 | Scripts read XG_USER_TOKEN, BP_APP_KEY, COMPANY_APP_KEY; documented in auth.md |
| 技能调用 | NONE | EXEC | ✓ 一致 | Skill creation/publishing workflow described in docs but not in tools_provided |
15 项发现
中危 外部 URL 外部 URL
https://skills.mediportal.com.cn SKILL.md:61 中危 外部 URL 外部 URL
https://cwork-web.mediportal.com.cn/user/login/appkey?appCode=cms_gpt&appKey= common/auth.md:21 中危 外部 URL 外部 URL
http://json-schema.org/draft-07/schema# docs/XGJK_SKILL_PROTOCOL.md:239 中危 外部 URL 外部 URL
https://api.weather-demo.com/openapi/weather/current docs/XGJK_SKILL_PROTOCOL.md:1044 中危 外部 URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/im/skill/delete openapi/skill-management/delete-skill.md:1 中危 外部 URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/im/skill/nologin/list openapi/skill-management/get-skills.md:1 中危 外部 URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/im/skill/register openapi/skill-management/register-skill.md:1 中危 外部 URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/im/skill/update openapi/skill-management/update-skill.md:1 中危 外部 URL 外部 URL
https://sg-cwork-api.mediportal.com.cn/ai-business/qiNiu/getSimpleUploadCredentials openapi/skill-management/upload-to-qiniu.md:1 中危 外部 URL 外部 URL
https://up-z2.qiniup.com/ openapi/skill-management/upload-to-qiniu.md:1 中危 外部 URL 外部 URL
https://host/api-center/doc.html#/im/1.机器人管理/deleteMyRobotUsingPOST scripts/fetch_api_doc.py:19 中危 外部 URL 外部 URL
https://host/api-center/doc.html#/im/1.机器人管理/listVisibleUsingGET scripts/fetch_api_doc.py:20 中危 外部 URL 外部 URL
https://host/api-center/doc.html#/im/xxx/someAPI scripts/fetch_api_doc.py:24 中危 外部 URL 外部 URL
https://host/api-center/doc.html#/im/2.消息管理/msgListByIdsUsingPOST scripts/fetch_api_doc.py:104 中危 外部 URL 外部 URL
https://sg-al-cwork-web.mediportal.com.cn/open-api scripts/work-report/group_contacts.py:21 目录结构
35 文件 · 161.7 KB · 4507 行 Markdown 24f · 2636L
Python 10f · 1866L
JSON 1f · 5L
├─
▾
common
│ ├─
auth.md
Markdown
│ └─
conventions.md
Markdown
├─
▾
design
│ ├─
DESIGN.md
Markdown
│ ├─
DISCUSSION-LOG.md
Markdown
│ └─
LEARNING-LOOP.md
Markdown
├─
▾
docs
│ ├─
SKILL_CREATION_WORKFLOW.md
Markdown
│ ├─
SKILL_VALIDATION_CHECKLIST.md
Markdown
│ └─
XGJK_SKILL_PROTOCOL.md
Markdown
├─
▾
examples
│ └─
▾
skill-management
│ └─
README.md
Markdown
├─
▾
openapi
│ ├─
▾
common
│ │ └─
appkey.md
Markdown
│ └─
▾
skill-management
│ ├─
api-index.md
Markdown
│ ├─
delete-skill.md
Markdown
│ ├─
get-skills.md
Markdown
│ ├─
pack-skill.md
Markdown
│ ├─
publish-skill.md
Markdown
│ ├─
register-skill.md
Markdown
│ ├─
update-skill.md
Markdown
│ └─
upload-to-qiniu.md
Markdown
├─
▾
references
│ ├─
auth-rules.md
Markdown
│ ├─
routing-table.md
Markdown
│ └─
workflow.md
Markdown
├─
▾
scripts
│ ├─
▾
skill-management
│ │ ├─
delete_skill.py
Python
│ │ ├─
get_skills.py
Python
│ │ ├─
pack_skill.py
Python
│ │ ├─
publish_skill.py
Python
│ │ ├─
README.md
Markdown
│ │ ├─
register_skill.py
Python
│ │ ├─
update_skill.py
Python
│ │ └─
upload_to_qiniu.py
Python
│ ├─
▾
work-report
│ │ ├─
group_contacts.py
Python
│ │ ├─
README.md
Markdown
│ │ └─
send_report_with_confirm.py
Python
│ └─
fetch_api_doc.py
Python
├─
_meta.json
JSON
└─
SKILL.md
Markdown
依赖分析 1 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
requests | * | pip | 否 | Version not pinned; used by work-report scripts |
安全亮点
✓ No malicious behavior: no reverse shells, no C2, no data exfiltration to external servers
✓ Credential tokens stay internal: XG_USER_TOKEN and appKey are read from env vars and passed only to legitimate platform APIs (mediportal.com.cn, qiniu.com)
✓ Token exchange is properly scoped: auth.md documents the token flow through the official /user/login/appkey endpoint
✓ No credential harvesting: scripts do not enumerate os.environ for secrets or send credentials to third parties
✓ No obfuscation: all code is readable Python, no base64-encoded payloads or eval tricks
✓ Access control is documented: SKILL.md clearly separates nologin operations (discover/create) from auth-required operations (publish/delete)
✓ No hidden functionality: all file writes are documented (pack_skill.py creates ZIPs, fetch_api_doc.py writes parsed docs)
✓ Solid authentication rules: auth.md enforces token priority chain and prohibits asking users for credentials
✓ Work report safety: send_report_with_confirm.py requires explicit CONFIRM_SEND token and shows confirmation before sending
✓ No remote code execution: all execution is via Python stdlib urllib/requests, no shell commands or curl|bash patterns