Undeclared Tool Scope
- Category
- MCP Least Privilege
- Confidence
- 70% confidence
- Finding
Without declared permissions the skill's intent is opaque and cannot be validated.
- Content
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a disclosed Qixinbao equity-structure lookup client that sends company identifiers to Qixinbao using a user-provided API token.
Install only if you trust Qixinbao with the queried company names and your API token. For sensitive due-diligence work, prefer querying by exact enterprise ID when possible and verify the returned company name because fuzzy name lookup can select a best match automatically. Consider pinning dependencies before production use.
Without declared permissions the skill's intent is opaque and cannot be validated.
The natural-language content of the skill, including the description, setup instructions, and usage examples, is entirely in Chinese. Under the policy, forcing a specific language without user opt-in is a language/locale violation because users are not offered an alternative language or an explicit choice.
The documentation states that when ename is provided and no exact match is found, the system will automatically use the first search result. This can cause silent query substitution, leading users or downstream agents to retrieve and act on equity data for the wrong company without realizing the mismatch, which is especially risky in due diligence, M&A, and related-party analysis workflows.
The class docstring is written only in Chinese, and the file continues to use Chinese-only user-facing text. Per the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified.
The thrown error string '请提供 API Token 或设置环境变量 QXBENT_API_TOKEN' is user-facing natural language that assumes Chinese without offering a language choice. This matches the language/locale policy violation criteria for all file types.
The natural-language description is entirely in Chinese and presents the skill as a Chinese-language tool without any indication that users can choose another language or locale. Under the policy rule, forcing a specific language without user opt-in can be a locale-policy concern unless the constraint is explicitly documented and justified.
Using a caret range for axios allows installation of different future patch/minor releases, reducing build reproducibility and making it harder to verify whether known vulnerable versions are being pulled in. In a skill that likely performs external HTTP requests to enterprise-data services, dependency drift in a network-facing library can increase exposure to supply-chain issues or latent client-side request vulnerabilities.
"author": "",
"license": "MIT",
"dependencies": {
"axios": "^1.6.0"
},
"devDependencies": {
"@types/node": "^20.0.0",
The manifest references axios with a non-exact version while the ecosystem has multiple advisories affecting various axios releases, so the actual installed version cannot be verified as safe from this file alone. Because this skill appears intended to query external business-data sources, an unverified HTTP client dependency increases risk from SSRF, proxy bypass, request handling flaws, or other known library issues if a vulnerable version is resolved.
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"axios": "^1.6.0"
},
"devDependencies": {
"@types/node": "^20.0.0",
"ts-node": "^10.9.0",
"typescript": "^5.0.0"
}
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
},
"devDependencies": {
"@types/node": "^20.0.0",
"ts-node": "^10.9.0",
"typescript": "^5.0.0"
}
}
Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.
"devDependencies": {
"@types/node": "^20.0.0",
"ts-node": "^10.9.0",
"typescript": "^5.0.0"
}
}