T09 · Insecure Skill Coding Practices
- Location
src/utils/request.js:93- Finding
API Token Transmitted in URL Query Strings
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly does what it claims, but it needs Review because it sends its API token in URL query strings and automatically saves collected Douyin data locally without opt-out or retention controls.
Install only if you are comfortable sending Douyin keywords, URLs, limits, and your Guaikei API token to www.guaikei.com. Prefer a dedicated low-privilege token, avoid running it in shared workspaces, review and delete generated logs, and invoke it only for explicit public Douyin data collection tasks.
src/utils/request.js:93API Token Transmitted in URL Query Strings
src/utils/log.js:25Retrieved User-Associated Data Stored Without Explicit Access Restrictions or Retention Controls
声明描述的是一个面向抖音公开数据采集/分析的技能,而给出的代码仅是 src/utils/args.js 中的通用命令行参数解析与帮助文本生成功能。该代码没有网络请求、数据源访问、抖音接口调用、页面抓取、数据处理或分析行为。虽然这类参数解析器可能作为整个项目的辅助模块存在,但就当前代码块本身而言,其实际行为与声明的核心用途明显不一致,因此应判定为描述与行为不匹配。
声明描述的是一个面向抖音公开数据采集/分析的技能,但提供的代码片段只是本地日志写入模块,没有任何网络请求、抖音接口调用、数据抓取、搜索、评论获取或热榜查询相关逻辑。虽然日志功能可能作为辅助实现存在,但当前代码块的实际行为与声明的核心用途明显不一致;此外,它还涉及本地文件系统写入这一描述中未体现的资源访问能力。因此应判定为描述与行为不匹配。
The declared description promises multiple Douyin public-data collection and analysis capabilities. The supplied code chunk does not implement any of those behaviors; it merely reads package.json from the local filesystem to obtain the package name. While this could be a harmless helper utility within a larger skill, based on the provided chunk alone its actual behavior is materially unrelated to the declared purpose, so this should be flagged as a mismatch.
The description presents a skill whose purpose is collecting and analyzing Douyin public data. However, the supplied code only contains utility functions for printing a banner and colored logs. These are supporting/logging behaviors, not the declared primary functionality. Since the actual code chunk does not implement the described data-source or analysis capabilities and instead serves an unrelated utility role, the description does not accurately represent this code chunk.
The skill requires access to the GUAIKEI_API_TOKEN environment variable but does not declare an explicit tool or permission scope limiting what runtime resources may be accessed. In an agent ecosystem, missing scope declarations weaken least-privilege controls and make it harder for the platform to constrain or audit secret exposure.
The description says the skill is applicable even when the user did not mention Douyin or data, which broadens invocation beyond clear user intent. Over-broad trigger rules can cause an agent to route unrelated requests into a data-exfiltrating third-party API workflow, increasing privacy, compliance, and surprise-execution risk.
This JSON schema contains natural-language titles and descriptions exclusively in Chinese, which effectively forces a specific language for users consuming the skill metadata. Under the policy, locale or language constraints should either be optional for the user or clearly justified as region-specific.
The package description is entirely in Chinese and presents the skill as a general-purpose analysis tool, but it does not indicate that the skill is China- or Chinese-language-specific, nor does it offer users a language choice. Under the policy, forcing a specific language without opt-in can be a natural-language policy violation.
The CLI persists fetched comment data to a local JSON file after printing results, but there is no explicit consent, warning, or opt-out for storage. Because comment data can contain personal information, usernames, text content, and other potentially sensitive public data, silent persistence increases privacy and compliance risk by leaving residual data on disk beyond the immediate user session.
This code uses Chinese-only natural-language strings in comments, error messages, and success output such as '获取抖音热榜失败' and '抖音热榜任务完成'. Under the language/locale policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly documented and justified.
The script sends the normalized Douyin URL, limit, and authentication token to remote functions createPostTask and getPostTask, which are network operations under this rule. While the skill's purpose implies fetching remote data, this file does not explicitly warn users that their supplied target URL and associated request data are being sent to an external service.
The CLI writes the full result set to a local JSON file derived from the queried Douyin account, without any explicit consent prompt or clear disclosure in this file. Because the skill is intended for data collection and analysis, the saved file may contain scraped profile/content data that persists on disk and can be accessed later by other local users, processes, or backup systems.
The tool reads an API token from the environment and sends the keyword and search options to remote API endpoints, but the CLI does not make this network transmission explicit to the user at runtime. In a data-collection skill, outbound requests are expected, so the context makes this less suspicious than covert exfiltration, yet lack of disclosure can still surprise users and expose sensitive search terms or operational intent to a third-party service.
The CLI persists full search output to a local JSON file named with user-supplied query data, but the user-facing flow does not clearly disclose that results will be written to disk. In this skill's context, the data is public Douyin content rather than privileged backend data, which reduces severity, but undisclosed local persistence can still leak research topics, monitoring targets, or collected datasets to other local users, backups, or endpoint telemetry.
This code uses Chinese-only user-facing status and error messages, such as the validation errors on these lines, without offering any language selection or documenting that the skill is intentionally Chinese-only. That creates a natural-language locale policy concern because it imposes a specific language on users by default.
The success and failure messages here are also hard-coded in Chinese only. Because the file provides no user opt-in or alternative locale handling, it appears to force a specific language rather than offering a documented, justified locale restriction.
The authentication error message is written only in Chinese and includes no language choice or fallback. This is a natural-language policy issue because the skill imposes a specific locale on all users rather than offering opt-in or a documented region-specific justification.
The module prints all user-facing status and warning messages exclusively in Chinese, including operational guidance and support information. For a general utility module, this forces a specific language on users without opt-in or justification, which matches the natural-language locale policy violation criteria.
The example '帮我做抖音竞品分析' is a broad business request that does not itself clearly distinguish between needing data retrieval and wanting strategic analysis only. Although the file suggests follow-up clarification, the trigger remains underspecified because it does not clearly limit activation to data-fetching scenarios.
The natural-language title and descriptions are entirely in Chinese, with no indication that the skill is China-specific or that users can choose another language. This can violate a language/locale policy when a skill implicitly forces one language without opt-in or justification.
The schema's human-readable title and field descriptions are entirely in Chinese, which imposes a specific language on users or developers consuming the skill metadata. There is no indication that this is optional, user-selectable, or justified as a region-specific tool, so it fits the language/locale policy violation category.
The schema title and description are written entirely in Chinese, which imposes a specific language context in user-facing natural language. The file does not indicate that Chinese is optional, selectable by the user, or required for a documented region-specific reason.
This manifest file contains user-facing natural-language titles and descriptions exclusively in Chinese, including the schema title and field descriptions. Because the file provides no opt-in, alternative locale, or justification that the skill is intended only for a Chinese-speaking audience, it may violate the language/locale policy requirement.
This JSON schema uses Chinese-only natural-language title and description text, which can impose a specific language on downstream users or tooling without indicating that the skill is region-specific or offering a language choice. The stated policy flags locale or language constraints when they are forced without opt-in or clear justification.
This JSON schema uses Chinese-only natural-language metadata for the title and field descriptions, but it does not state that the skill is China-specific or that language selection is optional. Under the policy, forcing a specific language without user opt-in can be a locale-policy issue even in config or schema files.
No suspicious patterns detected.