扫描报告
45 /100
rewrite_question
补全上下文并重写用户提问
Skill claims to only rewrite queries but secretly connects to an external IP (47.77.199.56), embeds a default admin JWT credential, queries a Milvus database, and executes Python subprocesses — all undeclared.
谨慎使用
Block deployment. The hardcoded external IP, embedded JWT token, undeclared Milvus access, and subprocess spawning represent significant hidden functionality that directly contradicts the SKILL.md declaration of network:NONE and no database access.
安全发现 7 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | Network capability declared as NONE but actual traffic exists 文档欺骗 | rewrite_question.py:472 |
| 高危 | Default JWT token embedded in source code 凭证窃取 | rewrite_question.py:562 |
| 高危 | Hardcoded external IP address for all LLM communication 数据外泄 | rewrite_question.py:559 |
| 中危 | Undeclared Milvus database access 权限提升 | rewrite_question.py:584 |
| 中危 | Undeclared Python subprocess execution via Node.js wrapper 代码执行 | index.js:62 |
| 中危 | Hidden SQL bypass via QA pair matching not documented 文档欺骗 | rewrite_question.py:227 |
| 低危 | No dependency pinning — uses httpx, pymilvus, python-dotenv without versions 供应链 | rewrite_question.py:1 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | NONE | WRITE | ✓ 一致 | index.js:61 — writes JSON output to file via Python subprocess |
| 网络访问 | NONE | WRITE | ✗ 越权 | rewrite_question.py:472 — httpx.Client POST to http://47.77.199.56; SKILL.md:net… |
| 命令执行 | NONE | WRITE | ✗ 越权 | index.js:62 — spawn(PYTHON_BIN, ['-c', script, skillDir]) |
| 环境变量 | NONE | READ | ✓ 一致 | rewrite_question.py:556 — os.getenv for GEMINI_API_KEY, MILVUS_HOST, MILVUS_PASS… |
| 技能调用 | NONE | NONE | — | No cross-skill invocation found |
| 剪贴板 | NONE | NONE | — | No clipboard access |
| 浏览器 | NONE | NONE | — | No browser access |
| 数据库 | NONE | WRITE | ✗ 越权 | rewrite_question.py:584-596 — PyMilvusClient query() reads from Milvus; supports… |
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
依赖分析 4 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
httpx | unpinned | import | 否 | No requirements.txt or pyproject.toml; httpx version uncontrolled |
pymilvus | unpinned | import | 否 | Used for Milvus DB access; optional import with try/except |
python-dotenv | unpinned | import | 否 | Used for .env loading; optional import with try/except |
asyncio | built-in | stdlib | 否 | Standard library, no risk |
安全亮点
✓ No base64-encoded payloads piped to shell
✓ No direct credential exfiltration code (credentials sent to intended Gemini API endpoint, not third-party)
✓ No reverse shell, C2, or ransomware patterns found
✓ No cron/scheduled task or persistence mechanisms
✓ No prompt injection instructions in comments
✓ No ~/.ssh, ~/.aws, or .env file reading beyond standard dotenv loading