T09 · Insecure Skill Coding Practices
- Location
scripts/geekbi_auth.py:61- Finding
Authentication secrets are unnecessarily mirrored across multiple storage locations
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent Shopee research tool, but it should be reviewed carefully because it stores login tokens in multiple local places and allows authenticated requests to be pointed at arbitrary API hosts.
Install only if you are comfortable with the skill storing GeekBI login state locally and making live authenticated requests to GeekBI. Use it from a private workspace, avoid shared or synced directories, do not override --base-url unless testing with isolated credentials, and clear auth state when finished or before sharing the project.
scripts/geekbi_auth.py:61Authentication secrets are unnecessarily mirrored across multiple storage locations
scripts/geekbi_auth.py:698Authenticated API transport accepts arbitrary and non-TLS destinations
requirements.txt:1Third-party dependency is not reproducibly pinned or hash-verified
The entire skill description, installation text, and usage examples are presented only in Chinese, with no indication that users may choose another language or that the skill is intended exclusively for a Chinese-language audience. Under the policy for natural-language violations, a skill should not impose a specific language unless it is clearly justified or optional.
The skill invokes multiple local scripts and references external data retrieval, implying shell, file-read, and network capabilities, but it does not declare any explicit tool scope or permission boundaries. This creates an avoidable security gap: an agent or runtime may grant broader access than necessary, increasing the blast radius if the skill is misused, modified, or prompt-injected through referenced content.
The instruction to '原样使用服务端中文 msg' requires output in Chinese regardless of the user's preferred language or locale. This is a natural-language policy concern because the file does not offer opt-in, fallback translation, or any user choice for language.
This Python file contains user-facing docstrings, CLI descriptions, status/error messages, and action prompts entirely in Chinese, including outputs the user must read to complete login or troubleshoot failures. Under the policy, forcing a specific language without opt-in is a natural-language policy violation unless the locale restriction is explicitly justified, which is not present here.
The manifest says the skill only uses GeekBI real-returned data for Shopee research and explicitly excludes account operations such as Seller Centre actions, which frames the skill as an analytics/query capability. This file implements local authentication state management, including clearing saved auth state and handling interactive login challenges, which is behavior beyond pure data querying/analysis and is not disclosed in the manifest description.
The module docstring and all user-visible error messages are written only in Chinese, which imposes a specific language on users without offering a choice. Under the policy, forcing a language or locale without opt-in is a natural-language policy violation unless clearly documented as a justified region-specific tool.
The module docstring specifies the behavior entirely in Chinese and the CLI descriptions and error messages are also fixed to Chinese, with no indication that users may choose another language. Under the policy, forcing a specific language without opt-in can be a natural-language policy violation unless the locale restriction is explicitly documented and justified.
Line L12 states '默认使用简体中文', which imposes a language preference as a default behavior. The file does not indicate any user opt-in or alternative language choice, so this is a natural-language locale policy concern.
This markdown file contains user-facing instructions only in Chinese, and there is no indication that the user can opt into another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the policy rule, forcing a specific language without user choice can be a natural-language policy violation.
The user-config storage path uses "temu-research-skill" inside a Shopee-related skill, which can cause authentication state collision or unintended token sharing between different skills if they run under the same user profile. That creates a cross-skill isolation failure where one skill may read, overwrite, or clear another skill's login state, potentially exposing access tokens or causing requests to be made under the wrong account context.
The file uses Chinese-only natural-language strings in the module docstring, argument validation errors, and CLI description, which indicates the skill is designed to operate in a specific language without any user opt-in or alternative locale path. Under the policy rule, locale or language constraints should either be optional for the user or clearly documented as region-specific and justified.
This code performs an HTTP request to an external Shopee AI search endpoint using user-supplied query parameters, but the file does not include any user-facing warning, confirmation, or explanatory comment about transmitting those inputs off-box. For code files, outbound network calls that transmit user data should have some visible disclosure unless the warning is documented elsewhere or clearly surfaced to the user.
This Python file builds URLs for an external API and validates API responses, indicating the skill performs outbound network requests to https://openapi.geekbi.com. The code contains no confirmation prompt, logging, or explanatory comment/docstring warning users that query parameters may be transmitted to an external service.
The code performs an authenticated HTTP request to retrieve site data, which transmits request metadata to a remote service. While there is error handling, this file does not include a user-facing warning, prompt, or explanatory comment/docstring describing that a live network call will be made.