T09 · Insecure Skill Coding Practices
- Location
scripts/xfei_video_translate.py:72- Finding
API credential material is embedded in request query strings
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This video-translation skill is mostly purpose-aligned, but it includes an under-documented action that can skip manual transcript review and sends credentials/data to a runtime endpoint that does not match the documentation.
Install only if you are comfortable giving the skill iFlytek/XFYUN API credentials and sending video URLs plus task metadata to iFlytek. Before use, reconcile the documented and coded API endpoint, avoid shared or preconfigured credentials, and do not use the confirm_transcript or force_rerun action unless you intentionally want to approve unreviewed transcript content and continue processing.
scripts/xfei_video_translate.py:72API credential material is embedded in request query strings
scripts/xfei_video_translate.py:153Undocumented action can skip manual transcript review and force workflow reruns
scripts/xfei_video_translate.py:40Runtime API destination conflicts with both documented endpoints
SKILL.md:74Third-party dependency installation is not reproducibly pinned
Claiming the skill includes pre-configured API credentials without any security warning normalizes use of shared secrets and conceals the associated abuse risk. Users may unknowingly rely on hardcoded credentials that can be extracted, revoked, rate-limited, or used to access task operations tied to a shared account. Because this skill sends user-supplied video jobs to a paid third-party API, the exposure can lead to financial abuse and cross-user privacy issues.
The documented behavior says the skill creates, lists, and retrieves translation tasks, but the analysis indicates additional behavior including confirming transcript/manual-review segments and use of credentials with external API calls. Undeclared functionality increases the chance of unintended remote actions and data disclosure because reviewers and users cannot accurately assess what operations the skill may perform.
The README describes submitting video translation tasks to iFlytek but does not warn users that video URLs and associated task data are transmitted to a third-party service. This undermines informed consent and can lead users to expose sensitive media, internal URLs, or metadata to an external processor without realizing it. In a localization skill, third-party transfer is expected, but the lack of disclosure still creates a real privacy and compliance risk.
The README explicitly states that the skill ships with pre-configured API credentials, which implies embedded shared secrets for a third-party service. Bundled credentials can be abused by anyone with access to the skill, enabling unauthorized API use, billing abuse, and possible access to other users' task metadata. In a video-translation skill, this is especially risky because user video URLs and processing requests are sent to the external provider under those credentials.
The skill declares executable requirements and relies on environment variables and outbound network access, but it does not explicitly declare tool scope or permissions. This weakens reviewability and user consent because a host system may allow code execution, secret access, and external requests without a clear policy boundary.
The skill does not clearly warn that user-supplied video URLs, task metadata, and related content are transmitted to a third-party service. This creates a privacy and compliance risk, especially if videos or metadata contain sensitive, proprietary, or regulated information and users are not informed before transfer.
This code file contains multiple hard-coded Chinese status and progress messages for user-facing CLI output, such as video/file descriptions and task-list retrieval text. Under the policy rule, forcing a specific language without user opt-in is a natural-language policy violation because users are not given any locale selection or English fallback despite the tool otherwise using English CLI arguments and descriptions.
The script exposes a confirm_transcript action that explicitly skips manual review, but this capability is not described in the skill metadata or top-level usage docs. Hidden workflow-altering functionality is risky because users or orchestrators may invoke the skill expecting only translation/task retrieval, while actually approving unreviewed transcript content that can degrade output quality, bypass human governance, or trigger downstream processing on incorrect text.
The confirm_transcript action skips manual review immediately and does so without an interactive warning, confirmation prompt, or strong acknowledgment mechanism. In a localization workflow, this can cause unreviewed transcripts to be treated as approved, leading to inaccurate translations, unsafe automation decisions, or policy/process bypass where human validation is expected.
The manifest says the skill supports task creation, task list, and task details retrieval. In this README, the documented CLI scope is limited to creating translation tasks and listing tasks, which does not align with the broader capability claimed in the manifest.
The authentication error guidance section is written entirely in Chinese, while the rest of the skill is primarily in English. This imposes a language-specific experience on users without opt-in or justification, which can violate language/locale policy expectations for user-facing skill content.
The module documentation and usage examples omit the confirm_transcript action even though the code exposes it. Undocumented privileged or workflow-changing behavior increases the chance of accidental misuse and reduces reviewability, because operators and security reviewers cannot accurately understand the skill's full behavior from its declared interface.
Detected: suspicious.exposed_secret_literal