T09 · Insecure Skill Coding Practices
- Location
src/utils/request.js:71- Finding
API Credential Exposed in URL Query Parameters
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to be a legitimate Xiaohongshu public-data integration, but its short description understates its broader collection features and its API token handling has avoidable security risk.
Install only if you are comfortable sending Xiaohongshu keywords, note/profile URLs, and your GUAIKEI API token to the third-party service. Treat it as a broader Xiaohongshu research and monitoring tool, not only a single-note comment collector, and avoid using sensitive or private inputs.
src/utils/request.js:71API Credential Exposed in URL Query Parameters
src/validate/url.js:3Domain Allowlist Bypass Through Substring-Based URL Validation
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
The skill is declared as a comment collector for a single note, but the documented interface includes search filters and search-task workflows. In context, this makes the skill more dangerous because it is an external data-harvesting integration, so inaccurate labeling weakens oversight of what third-party collection operations are actually being authorized.
Referenced artifact was not completely inspected
- "分析这条小红书笔记评论区的主要观点和负面反馈: node src/xiaohongshu/detail-cli.js --url 'https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy' --limit 100"
Referenced artifact was not completely inspected
- "分析这条小红书笔记评论区的主要观点和负面反馈: node src/xiaohongshu/detail-cli.js --url 'https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy' --limit 100"
Referenced artifact was not completely inspected
- "分析这条小红书笔记评论区的主要观点和负面反馈: node src/xiaohongshu/detail-cli.js --url 'https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy' --limit 100"
Referenced artifact was not completely inspected
- "看这个小红书博主最近 20 条作品都在发什么: node src/xiaohongshu/post-cli.js --url 'https://www.xiaohongshu.com/user/profile/xxx?xsec_token=yyy' --limit 20"
Referenced artifact was not completely inspected
- "看这个小红书博主最近 20 条作品都在发什么: node src/xiaohongshu/post-cli.js --url 'https://www.xiaohongshu.com/user/profile/xxx?xsec_token=yyy' --limit 20"
Referenced artifact was not completely inspected
- "看这个小红书博主最近 20 条作品都在发什么: node src/xiaohongshu/post-cli.js --url 'https://www.xiaohongshu.com/user/profile/xxx?xsec_token=yyy' --limit 20"
The implementation in this file performs published-post task creation and retrieval for blogger/profile URLs, which materially conflicts with the skill manifest claiming note-comment collection. This mismatch can cause the agent to access and return a different class of data than the user expects, undermining consent, least privilege, and downstream safety controls that rely on accurate skill descriptions.
The file implements note-search capabilities even though the skill metadata says the skill should only collect comments for a user-supplied note link. This mismatch expands the skill's effective scope to broader content discovery and collection, which can enable undisclosed data gathering and violates least-privilege and user expectation boundaries.
The CLI schema and help text clearly implement collection of a Xiaohongshu profile URL and a post limit, not a note URL and comment limit as promised by the skill manifest. This semantic mismatch is dangerous because users may authorize or run the skill believing it only fetches public comments for one note, while it actually targets a broader profile-post collection workflow and can collect different data than expected.
The runtime behavior, request object, messages, and output all indicate a 'post' task over a blogger profile, contradicting the manifest's promised note-comment extraction workflow. In a data-collection skill, this kind of implementation/manifest drift materially increases risk because it can cause users and integrators to disclose different URLs, retrieve broader datasets, and mishandle downstream privacy expectations.
The file implements a generic keyword-based Xiaohongshu search CLI, while the skill metadata describes a narrowly scoped comment-collection capability for a provided note URL. This scope mismatch expands the agent's effective data-access and discovery surface, enabling content enumeration and collection beyond the user's expected task, which is dangerous in agent settings because operators may grant or run the skill under false assumptions.
Without declared permissions the skill's intent is opaque and cannot be validated.
The manifest title and description market the skill as a comment collector, while the body documents broader scraping and monitoring use cases. Security review and users often rely on manifest metadata first, so this discrepancy can lead to underestimating the scope of external data collection and approval requirements.
The manifest implies only note-link plus comment-limit inputs, but the routing section introduces unrelated keyword and creator-profile workflows. This is dangerous because upstream systems may permit the skill under a narrow data-access assumption while it actually enables broader collection from search and profile surfaces.
The section explicitly recommends only Chinese natural-language trigger phrasing for better recognition, and the entire skill description/invocation guidance is presented as Chinese-only without any opt-in or alternative locale handling. This can violate a language/locale policy when a skill effectively requires one language rather than letting the user choose.