扫描报告
40 /100
rewrite_question
补全上下文并重写用户提问
技能功能与声明一致,但存在硬编码外部IP(47.77.199.56)和内嵌JWT凭证(作为默认fallback)等高危指标,构成凭证泄漏和潜在数据外送风险。
谨慎使用
将硬编码IP和JWT token移除,强制要求环境变量配置;使用HTTPS替代HTTP;审查47.77.199.56的归属和必要性。
攻击链 3 步
◎
入口 攻击者获得源代码仓库读取权限或环境变量访问权
rewrite_question.py:579⬡
提权 从源码中提取硬编码JWT token和API_KEY
rewrite_question.py:579◉
影响 使用提取的凭证向
47.77.199.56的API进行认证,获取BI系统访问权限或窃取Milvus数据库中的QA对数据 rewrite_question.py:559安全发现 4 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | 硬编码JWT token暴露于源码 凭证窃取 | rewrite_question.py:579 |
| 高危 | 硬编码外部IP地址作为默认API端点 敏感访问 | rewrite_question.py:559 |
| 中危 | 第三方依赖无版本锁定 供应链 | rewrite_question.py:1 |
| 低危 | 外部网络连接未在SKILL.md中声明 文档欺骗 | SKILL.md:1 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | READ | READ | ✓ 一致 | rewrite_question.py:614 读取.env文件 |
| 网络访问 | NONE | WRITE | ✗ 越权 | rewrite_question.py:559 硬编码外部IP作为默认API端点 |
| 命令执行 | NONE | NONE | — | index.js:55 使用spawn调用Python,无shell注入 |
| 环境变量 | NONE | READ | ✗ 越权 | rewrite_question.py:563-566 读取GEMINI_API_KEY/TOKEN等环境变量 |
1 高危 2 项发现
高危 IP 地址 硬编码 IP 地址
47.77.199.56 rewrite_question.py:559 中危 外部 URL 外部 URL
http://47.77.199.56/api/v1beta rewrite_question.py:559 目录结构
3 文件 · 41.2 KB · 943 行 Python 1f · 769L
JavaScript 1f · 128L
Markdown 1f · 46L
├─
index.js
JavaScript
├─
rewrite_question.py
Python
└─
SKILL.md
Markdown
依赖分析 3 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
httpx | * | pip | 否 | 无版本锁定 |
pymilvus | * | pip | 否 | 无版本锁定;连接外部向量数据库 |
python-dotenv | * | pip | 否 | 无版本锁定 |
安全亮点
✓ 功能逻辑清晰,与SKILL.md声明的用途一致(上下文重写)
✓ 无subprocess/shell管道执行,无命令注入风险
✓ 无eval()/exec()调用,代码无明显混淆
✓ 无遍历os.environ匹配敏感关键字的凭证收割行为
✓ HTTP POST仅发往配置的API端点,无数据外泄到第三方