可疑 — 风险评分 40/100
上次扫描:10 小时前 重新扫描
40 /100
rewrite_question
补全上下文并重写用户提问
技能功能与声明一致,但存在硬编码外部IP(47.77.199.56)和内嵌JWT凭证(作为默认fallback)等高危指标,构成凭证泄漏和潜在数据外送风险。
技能名称rewrite_question
分析耗时65.1s
引擎pi
谨慎使用
将硬编码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暴露于源码 凭证窃取
_get_gemini_config()函数中内嵌约500字符JWT Bearer token作为默认fallback值,当环境变量未配置时使用。此token对应企业内部BI系统身份认证,直接暴露于源码存在被提取利用风险。
_default_token = ("BI-eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJ1c2VySWRcIjpcImFkbWluXCIsXCJ1c2VyTG9naW5OYW1lXCI6bnVsbC...")
→ 移除代码中的硬编码token,强制要求通过环境变量或.env文件注入。添加启动时校验逻辑,当检测到使用默认凭证时报错退出。
rewrite_question.py:579
高危
硬编码外部IP地址作为默认API端点 敏感访问
GEMINI_API_URL的默认值为http://47.77.199.56/api/v1beta,指向外部IP地址而非本地服务。且使用HTTP(非HTTPS)传输,存在中间人攻击风险。此IP在SKILL.md中未声明。
base_url = os.getenv("GEMINI_API_URL", "http://47.77.199.56/api/v1beta").rstrip("/")
→ 将默认值改为localhost或明确提示需要配置;强制使用HTTPS;调查47.77.199.56的IP归属,确认是否为授权的内部API网关。
rewrite_question.py:559
中危
第三方依赖无版本锁定 供应链
requirements.txt/pip依赖未指定版本范围(pymilvus、httpx、python-dotenv等),存在供应链攻击风险。
import httpx (无版本锁定)
→ 为所有pip依赖添加版本锁定(如httpx>=0.27.0,<1.0),定期更新依赖审计漏洞。
rewrite_question.py:1
低危
外部网络连接未在SKILL.md中声明 文档欺骗
SKILL.md声明的能力仅限于'文本处理/LLM调用',但未说明默认连接到外部IP 47.77.199.56,也未说明Milvus数据库连接。实际网络行为超出文档声明范围。
功能描述:分析 history 上下文,消除 query 中的指代不明...(未提及外部网络连接)
→ 在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 128L · 4.5 KB
├─ 🐍 rewrite_question.py Python 769L · 35.3 KB
└─ 📝 SKILL.md Markdown 46L · 1.4 KB

依赖分析 3 项

包名版本来源已知漏洞备注
httpx * pip 无版本锁定
pymilvus * pip 无版本锁定;连接外部向量数据库
python-dotenv * pip 无版本锁定

安全亮点

✓ 功能逻辑清晰,与SKILL.md声明的用途一致(上下文重写)
✓ 无subprocess/shell管道执行,无命令注入风险
✓ 无eval()/exec()调用,代码无明显混淆
✓ 无遍历os.environ匹配敏感关键字的凭证收割行为
✓ HTTP POST仅发往配置的API端点,无数据外泄到第三方