Scan Report
40 /100
rewrite_question
补全上下文并重写用户提问
技能功能与声明一致,但存在硬编码外部IP(47.77.199.56)和内嵌JWT凭证(作为默认fallback)等高危指标,构成凭证泄漏和潜在数据外送风险。
Use with caution
将硬编码IP和JWT token移除,强制要求环境变量配置;使用HTTPS替代HTTP;审查47.77.199.56的归属和必要性。
Attack Chain 3 steps
◎
Entry 攻击者获得源代码仓库读取权限或环境变量访问权
rewrite_question.py:579⬡
Escalation 从源码中提取硬编码JWT token和API_KEY
rewrite_question.py:579◉
Impact 使用提取的凭证向
47.77.199.56的API进行认证,获取BI系统访问权限或窃取Milvus数据库中的QA对数据 rewrite_question.py:559Findings 4 items
| Severity | Finding | Location |
|---|---|---|
| High | 硬编码JWT token暴露于源码 Credential Theft | rewrite_question.py:579 |
| High | 硬编码外部IP地址作为默认API端点 Sensitive Access | rewrite_question.py:559 |
| Medium | 第三方依赖无版本锁定 Supply Chain | rewrite_question.py:1 |
| Low | 外部网络连接未在SKILL.md中声明 Doc Mismatch | SKILL.md:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | READ | READ | ✓ Aligned | rewrite_question.py:614 读取.env文件 |
| Network | NONE | WRITE | ✗ Violation | rewrite_question.py:559 硬编码外部IP作为默认API端点 |
| Shell | NONE | NONE | — | index.js:55 使用spawn调用Python,无shell注入 |
| Environment | NONE | READ | ✗ Violation | rewrite_question.py:563-566 读取GEMINI_API_KEY/TOKEN等环境变量 |
1 High 2 findings
High IP Address 硬编码 IP 地址
47.77.199.56 rewrite_question.py:559 Medium External URL 外部 URL
http://47.77.199.56/api/v1beta rewrite_question.py:559 File Tree
3 files · 41.2 KB · 943 lines Python 1f · 769L
JavaScript 1f · 128L
Markdown 1f · 46L
├─
index.js
JavaScript
├─
rewrite_question.py
Python
└─
SKILL.md
Markdown
Dependencies 3 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
httpx | * | pip | No | 无版本锁定 |
pymilvus | * | pip | No | 无版本锁定;连接外部向量数据库 |
python-dotenv | * | pip | No | 无版本锁定 |
Security Positives
✓ 功能逻辑清晰,与SKILL.md声明的用途一致(上下文重写)
✓ 无subprocess/shell管道执行,无命令注入风险
✓ 无eval()/exec()调用,代码无明显混淆
✓ 无遍历os.environ匹配敏感关键字的凭证收割行为
✓ HTTP POST仅发往配置的API端点,无数据外泄到第三方