Scan Report
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.
Use with caution
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.
Findings 7 items
| Severity | Finding | Location |
|---|---|---|
| High | Network capability declared as NONE but actual traffic exists Doc Mismatch | rewrite_question.py:472 |
| High | Default JWT token embedded in source code Credential Theft | rewrite_question.py:562 |
| High | Hardcoded external IP address for all LLM communication Data Exfil | rewrite_question.py:559 |
| Medium | Undeclared Milvus database access Priv Escalation | rewrite_question.py:584 |
| Medium | Undeclared Python subprocess execution via Node.js wrapper RCE | index.js:62 |
| Medium | Hidden SQL bypass via QA pair matching not documented Doc Mismatch | rewrite_question.py:227 |
| Low | No dependency pinning — uses httpx, pymilvus, python-dotenv without versions Supply Chain | rewrite_question.py:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | NONE | WRITE | ✓ Aligned | index.js:61 — writes JSON output to file via Python subprocess |
| Network | NONE | WRITE | ✗ Violation | rewrite_question.py:472 — httpx.Client POST to http://47.77.199.56; SKILL.md:net… |
| Shell | NONE | WRITE | ✗ Violation | index.js:62 — spawn(PYTHON_BIN, ['-c', script, skillDir]) |
| Environment | NONE | READ | ✓ Aligned | rewrite_question.py:556 — os.getenv for GEMINI_API_KEY, MILVUS_HOST, MILVUS_PASS… |
| Skill Invoke | NONE | NONE | — | No cross-skill invocation found |
| Clipboard | NONE | NONE | — | No clipboard access |
| Browser | NONE | NONE | — | No browser access |
| Database | NONE | WRITE | ✗ Violation | rewrite_question.py:584-596 — PyMilvusClient query() reads from Milvus; supports… |
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 4 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
httpx | unpinned | import | No | No requirements.txt or pyproject.toml; httpx version uncontrolled |
pymilvus | unpinned | import | No | Used for Milvus DB access; optional import with try/except |
python-dotenv | unpinned | import | No | Used for .env loading; optional import with try/except |
asyncio | built-in | stdlib | No | Standard library, no risk |
Security Positives
✓ 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