T09 · Insecure Skill Coding Practices
- Location
scripts/geekbi_auth.py:65- Finding
Bearer Tokens Are Replicated into Project and Workspace Directories
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill does query Mercado Libre data through GeekBI, but it also stores login tokens in multiple local locations, including the current workspace, so users should review it before installing.
Install only if you are comfortable authenticating with GeekBI and having its bearer token stored locally. Before using it in important repositories or shared/synced folders, confirm where .geekbi/agent-auth.json may be written, avoid custom base URLs unless trusted, and treat any displayed login link as untrusted until you verify the domain.
scripts/geekbi_auth.py:65Bearer Tokens Are Replicated into Project and Workspace Directories
scripts/geekbi_auth.py:497Unvalidated Server-Controlled Messages and Links Are Relayed to Users
The declared functionality is Mercado Libre product search and analysis, but the detected behavior reportedly includes credential persistence, token management, login flow handling, and local state manipulation unrelated to the user-facing description. This mismatch is dangerous because it can conceal sensitive authentication activity behind an innocuous data-analysis label, undermining user consent, review, and monitoring.
The declared functionality is Mercado Libre product search and analysis, but the detected behavior reportedly includes credential persistence, token management, login flow handling, and local state manipulation unrelated to the user-facing description. This mismatch is dangerous because it can conceal sensitive authentication activity behind an innocuous data-analysis label, undermining user consent, review, and monitoring.
The skill declares no explicit tool scope or permission boundaries even though the referenced behavior implies file access, network access, and shell/script execution. In an agent environment, missing tool restrictions can allow broader-than-expected execution paths and make it harder to enforce least privilege or review whether the skill only performs the stated Mercado Libre analysis tasks.
The trigger description is broad enough to match many generic product-analysis requests, which increases the chance the agent invokes this skill outside its intended context. Over-broad routing is risky because the skill may gain access to tools, data, or external services when a narrower or safer skill would have been more appropriate.
The module docstring and many user-facing messages are written only in Chinese, indicating the skill communicates in a fixed language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is clearly justified, which is not present in this file.
The manifest says the skill should query Mercado Libre product data from GeekBI and explicitly limits itself to returning GeekBI data, not broader account-oriented behavior. This file implements a full persistent authentication subsystem: it creates local state files, mirrors tokens across multiple directories, polls login completion, and exposes a CLI command to clear auth state, which is broader than the described search/analysis functionality.
This Python file contains its docstring and all user-visible error messages exclusively in Chinese, which imposes a specific language on users. Under the policy rule, forcing a locale/language without offering choice or documenting a justified regional constraint is a natural-language policy violation.
This Python file contains its primary natural-language interface entirely in Chinese, including the module description, CLI argument help, and error messages. Because the skill does not offer any language/locale opt-in or document that it is intentionally China/Chinese-specific, it appears to impose a fixed language on users, which matches the locale-policy violation criteria.
The README is entirely written in Chinese and does not indicate that other languages are supported or that the Chinese-only presentation is a justified locale-specific constraint. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation.
The storage_status function enumerates concrete local paths, probes readability/writability/locking, and reports detailed storage diagnostics. That operational capability is not part of the manifest's stated purpose of querying and analyzing Mercado Libre product data, so the implementation surface is broader than the declared behavior.