Back to skill

Security audit

guaikei-collector

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it claims: it fetches public Xiaohongshu data through a third-party API, but users should understand that tokens, URLs, and full results are sent or stored as part of normal operation.

Install only if you are comfortable sending Xiaohongshu keywords, profile/note URLs, and your Guaikei API token to the Guaikei service. Treat generated logs as sensitive because they can contain research targets, collected comments, profile/note URLs, and xsec_token-bearing links; delete or protect logs on shared systems.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
src/utils/request.js:71
Finding

API Credential Exposure Through URL Query Parameters

Content
View full analysis
{ return await postJson( "/api/xiaohongshu/note-search/keyword", { _: Date.now(), token: token }, { keyword, type, sort, time, limit }, ); ``` Representative caller from `src/api/search.js:49-59`: ```js async function getSearchTask(token, keyword ...[truncated 2487 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
src/utils/log.js:5
Finding

Automatic Plaintext Storage of Collected Data and Capability-Bearing URLs

Content
View full analysis
|]/g, "_") .replace(/\.\.+/g, "_") .replace(/^\.+|\.+$/g, ""); if (safeFilename.length > 200) { safeFilename = safeFilename.substring(0, 200); } if (safeFilename === "") { safeFilename = `log_${Date.now()}`; } const outputFilename = path.join( path.dirname(__filename), "..", "..", "logs", safeFilename, ); try { await fs.promises.mkdir(path.dirname(outputFilename), { recursive: true }); await fs.promises.writeFile(outputFilename, content); utils.printSuccess(` → 已保存到 ${outputFilename}`); } catch (error) { utils.printError(`日志写入失败: ${error.message}`); } } ``` From `src/xiaohongshu/detail-cli.js:132-157`: ```js const finalOutput = { status: "success", error_code: "OK", message: "评论任务完成", timestamp: new Date().toLocaleString(), request: { command: "detail", url: url, limit: limit, }, skill_metadata: { skill_version: constants.VERSION, runtime_version: process.versions.node, execution_time: Date.now() - startTime, }, results: detailTask, }; console.log(JSON.stringify(finalOutput, null, 2)); utils.printSuccess(`评论任务完成, 已返回结果`); await log.taskWrite( `${startTime}_${validator.url2Name(url)}_detail.json`, JSON.stringify(fina ...[truncated 4104 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (39)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The supplied code does not implement the declared Xiaohongshu data collection assistant behavior. Instead, it is a reusable command-line argument parser utility. It only parses CLI flags, positional arguments, defaults, required parameters, and help text. While such a utility could support a larger scraping tool, this code chunk itself does not access Xiaohongshu, perform network requests, collect public data, retrieve notes/comments, or monitor posting activity. Therefore, the description does not accurately represent what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description promises a full Xiaohongshu data collection tool with multiple scraping/monitoring capabilities. However, this code chunk contains only generic utility functions for printing a banner and colored logs to stderr. Those utilities may support a larger scraper, but by themselves they do not implement or demonstrate the declared primary purpose. Therefore, for this supplied code chunk, the description does not accurately represent the actual behavior shown.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 41)May include surrounding context.

md
- "分析这条小红书笔记评论区的主要观点和负面反馈: node src/xiaohongshu/detail-cli.js --url 'https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy' --limit 100"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 107)May include surrounding context.

md
- "分析这条小红书笔记评论区的主要观点和负面反馈: node src/xiaohongshu/detail-cli.js --url 'https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy' --limit 100"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 241)May include surrounding context.

md
- "分析这条小红书笔记评论区的主要观点和负面反馈: node src/xiaohongshu/detail-cli.js --url 'https://www.xiaohongshu.com/explore/xxx?xsec_token=yyy' --limit 100"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 42)May include surrounding context.

md
- "看这个小红书博主最近 20 条作品都在发什么: node src/xiaohongshu/post-cli.js --url 'https://www.xiaohongshu.com/user/profile/xxx?xsec_token=yyy' --limit 20"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 108)May include surrounding context.

md
- "看这个小红书博主最近 20 条作品都在发什么: node src/xiaohongshu/post-cli.js --url 'https://www.xiaohongshu.com/user/profile/xxx?xsec_token=yyy' --limit 20"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 253)May include surrounding context.

md
- "看这个小红书博主最近 20 条作品都在发什么: node src/xiaohongshu/post-cli.js --url 'https://www.xiaohongshu.com/user/profile/xxx?xsec_token=yyy' --limit 20"

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The package description and keywords are entirely in Chinese, which constitutes a natural-language locale constraint in user-facing metadata. There is no indication that the skill is region-specific by design or that users can opt into a preferred language, so this may violate language/locale policy requirements.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is consistently described as a Xiaohongshu public-data collector in the manifest and throughout the README, but line L25 states '获取抖音评论详情', which refers to Douyin comments. That inline documentation contradicts the stated platform-specific intent and misrepresents what the skill is for.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The README states that all task results are automatically saved under logs/ but does not clearly warn that collected public-platform data, searched keywords, and user-supplied profile or note URLs will persist locally. In this skill's context, those artifacts can reveal research targets, monitored competitors, campaign strategy, and scraped content, increasing exposure if the host is shared, backed up broadly, or logs are later exfiltrated.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code sends the provided API token as part of outbound HTTP requests when creating a detail task. Although the function has technical docstrings, there is no user-facing warning, confirmation, or disclosure in this file that sensitive credential data will be transmitted to an external API.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This file contains natural-language content such as module descriptions, parameter documentation, and retry/error messages exclusively in Chinese. Under the stated policy, forcing a specific language without user opt-in is a locale/language policy violation unless the constraint is explicitly justified as region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This JavaScript file contains natural-language comments and user-facing error/help text entirely in Chinese, including thrown error messages and generated CLI help output. Under the stated policy, forcing a specific language without user opt-in is a locale policy violation unless the constraint is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The user-facing strings are entirely in Chinese and present warnings/instructions without any indication that language can be selected or changed. This creates a natural-language policy concern because the skill appears to require a specific language for critical status and recovery messaging.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

This JavaScript code issues outbound HTTPS requests and may transmit query parameters and JSON payload data, but the file contains no confirmation prompt, logging, comment, or docstring disclosing that behavior. For a generic request utility, this is a safety-relevant operation that lacks any visible warning in the code itself.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Multiple thrown error messages are hard-coded in Chinese, which imposes a specific language on users without any opt-in or indication that the skill is region-specific. That is a natural-language locale policy issue under the requirement to avoid forcing a language unless the constraint is documented and justified.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The CLI silently persists the full fetched note/comment payload to a local JSON file after printing results, creating an undocumented data-at-rest side effect. Because the collected content may include sensitive research data or personal data from comments, this increases exposure on shared machines, CI runners, or agent sandboxes where users may expect transient stdout-only behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The tool writes detailed task results to disk without an explicit runtime warning or user consent, which can surprise operators who expect only console output. This is especially risky in automation environments because the generated file may persist scraped comments and metadata beyond the intended session and be picked up by backups, logs, or other users.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest describes a public-data collection assistant that fetches Xiaohongshu notes and returns structured data for research/analysis. In addition to printing results, this file persists the full output to disk via log.taskWrite, which is a material behavior not implied by the description's '返回结构化数据' wording.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The CLI writes the full search output to a local JSON file using a filename derived from user-controlled input, but does not clearly disclose this persistence to the user. In this skill’s context, the results can include scraped public platform data and operational metadata, so silently storing them increases the risk of unintended retention, local exposure, and downstream privacy/compliance issues on shared systems or CI environments.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The manifest description is entirely in Chinese and frames the skill for Chinese-platform workflows without stating whether other languages are supported or allowing user opt-in to a preferred language. Under the policy, language constraints should be optional or explicitly justified rather than implicitly enforced.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The user-facing example prompts are all written in Chinese and no alternative language option is provided. This suggests the skill expects a specific language/locale for activation and use, which should either be optional or clearly documented as a justified regional constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The natural-language instructions and usage guidance are effectively forced into a single language/locale, with no opt-in or alternative language noted. Under the stated policy, forcing a specific language without user choice can be a locale-policy violation unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.