T09 · Insecure Skill Coding Practices
- Location
src/utils/request.js:101- Finding
API Token Exposed in URL Query Strings
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Douyin data skill is purpose-aligned, but it should be reviewed because it sends the API token in URL query strings and saves collected results locally by default.
Install only if you are comfortable sending your Douyin queries, target URLs or IDs, and GUAIKEI_API_TOKEN to guaikei.com. Treat the token as sensitive, rotate it if exposed, and be aware that successful search, creator-post, and comment results are saved under the skill's logs directory until you delete them.
src/utils/request.js:101API Token Exposed in URL Query Strings
src/utils/log.js:29Collected Douyin Data Persisted with Ambient File Permissions
声明描述的是面向抖音公开数据抓取与分析的业务能力,但实际代码仅是底层通用参数解析模块,属于与抖音无关的基础设施代码。从该代码片段看,不涉及抖音平台访问、数据抓取、评论分析、热榜查询或任何已声明的核心能力。因此,代码行为与声明用途存在明显不匹配。尽管这可能是项目中的辅助文件,但就所提供代码块本身而言,其实际行为与声明描述不一致。
The skill requires access to the sensitive environment variable GUAIKEI_API_TOKEN but does not declare an explicit tool/permission scope such as allowed-tools or permissions. This weakens least-privilege controls and can let the runtime expose more capability than the skill documentation makes explicit, especially when the skill forwards data to a third-party API.
The manifest description, operational guidance, examples, and support instructions are all in Chinese, and there is no statement that users may interact in other languages or that Chinese is required for a documented regional/compliance reason. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.
The schema title and field descriptions are entirely in Chinese, which imposes a specific language on users and downstream developers without any visible opt-in or justification in this file. Under the language/locale policy, this is a natural-language policy concern unless the skill explicitly offers language choice or documents a justified regional scope.
The natural-language metadata throughout the schema is written exclusively in Chinese, including the schema title and all field descriptions. For a general schema file, this imposes a specific language without any visible opt-in, alternative locale, or justification that the skill is region-specific.
The README states that collected Douyin data is automatically exported as JSON logs, but it does not prominently warn that public-video, author, comment, and hot-list data will be persisted to local disk by default. This can create unintended local retention of scraped content, including potentially sensitive or regulated data such as comments or competitor-monitoring datasets, increasing exposure if the host is shared, backed up, or later compromised.
This markdown file presents all operational descriptions in Chinese, which effectively forces a specific language for users. The policy allows locale constraints only when users are given a choice or when the restriction is clearly documented and justified, neither of which appears here.
The function sends the provided token and video URL to an external API via requestApi, which is a data-transmitting network operation. Although the code has developer docstrings, there is no confirmation prompt, user-facing disclosure, or warning text in this file indicating that user data and credentials will be sent to a remote service.
This JavaScript file contains natural-language comments exclusively in Chinese, including the module description and field documentation. Under the policy, forcing a specific language without user opt-in or documented justification is a locale/language policy violation.
This code persists the full command output, including the requested URL and fetched results, to a file via log.taskWrite(...). While the script logs progress to the console, there is no explicit disclosure that data will be saved locally, no confirmation prompt, and no inline warning near the write operation.
The CLI writes full search output, including requested keywords and returned results, to a local file by default. In a data-retrieval skill, this creates an undocumented persistence channel that can expose potentially sensitive research terms or collected public data to other local users, backup systems, or later compromise of the host.
Search results are saved locally without an explicit user warning, confirmation, or opt-in control. Even when the source data is public, automatic local persistence can violate user expectations and increase privacy and data-handling risk, especially for sensitive search topics or regulated environments.
The AuthError string forces Chinese-language guidance, including remediation text, for all users. This is a natural-language locale policy issue because the file does not provide any user language selection, fallback, or justification for restricting output to a single language.
This JavaScript file uses Chinese-only natural-language comments, examples, and user-facing error messages, such as the validation errors and keyword examples. Under the policy, forcing a specific language without user opt-in or documented regional justification is a natural-language policy violation.
The title and descriptions in this schema are entirely Chinese-language strings, and the file does not indicate that the skill is China/Chinese-specific or that users can opt into another language. Under the policy for natural-language violations, forcing a specific language without user choice can be a locale-policy issue.
This JSON schema uses Chinese for the top-level title/description and all property descriptions, which imposes a specific language in natural-language metadata. The file provides no indication that the locale is optional, configurable, or intentionally limited to a Chinese-only audience.
This JSON schema contains user-facing title and description fields exclusively in Chinese, which effectively forces a specific language for users without any opt-in or explanation. The stated policy flags language or locale constraints when the skill does not offer a language choice or document a justified regional scope.
This JSON schema uses Chinese-only natural-language title and description strings, which can amount to a locale/language policy issue when no user opt-in or region-specific justification is provided. Because the file is a manifest/config-type artifact and contains only Chinese-facing metadata, users in other locales are not offered a language choice.
This JSON schema is a manifest-type file, so natural-language policy checks apply. The title and descriptions are entirely in Chinese, which imposes a specific language/locale on users without any opt-in or documented justification that the skill is intentionally region-specific.
This is a manifest file, so vague-trigger review applies. The description lists broad capabilities like keyword search, creator scraping, and hot-list retrieval, but provides no specificity about invocation conditions, allowed contexts, or boundaries, which can make matching or activation overly broad if the manifest is used for skill discovery.
SQP-3 applies to all file types and covers language or locale policy violations. Nearly all operational instructions and natural-language command mappings are provided only in Chinese, with no indication that users may choose another language or that the locale restriction is required for a justified regional-compliance reason.
This markdown file presents all user-facing instructions and parameter descriptions in Chinese only. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale constraint is explicitly documented and justified.
The file's natural-language strings and comments are entirely in Chinese, including user-facing operation labels such as '创建任务' and '查询任务'. If these strings are surfaced to users, this enforces a specific language without any visible opt-in or locale selection mechanism.
This file’s natural-language content, including the module description and function documentation, is entirely in Chinese. Under the policy rules, forcing a specific language without user opt-in or a documented locale-specific justification is a natural-language policy concern.
This code sends a token and user-provided search keyword to a remote API via requestApi, which is a network operation covered by the warning requirement for code files. Although the function docstrings describe parameters and API failure behavior, they do not disclose to a user that their token and query data will be transmitted externally, and there is no confirmation or user-facing logging in this file.
No suspicious patterns detected.