T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/utils/validator.js:11- Finding
Arbitrary Local Files Can Be Uploaded to the Remote Service
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a real cloud transcription skill, but it can send more than just intended media to remote services because file, URL, and upload destinations are not tightly scoped.
Review this skill before installing. Use it only with media files and links you explicitly intend to send to GuaiKei's cloud service, avoid passing sensitive local paths, and avoid untrusted URLs unless it runs in a contained environment with restricted filesystem and network access. Treat the privacy and deletion claims as provider promises rather than guarantees enforced by this client.
scripts/utils/validator.js:11Arbitrary Local Files Can Be Uploaded to the Remote Service
scripts/utils/validator.js:3Unrestricted URL Downloads Permit Server-Side Request Forgery
scripts/utils/helper.js:27Unbounded Remote Downloads Can Exhaust Local Disk and Network Resources
scripts/utils/upload.js:10Presigned Upload Destination Is Not Restricted to Documented Service Domains
The skill advertises media transcription but, per the finding, may also download arbitrary remote files, manage partial downloads, and write local files beyond the narrow user-visible task. If true in the implementation, this expands the attack surface to SSRF-like retrieval, unwanted persistence, and broader file-handling than users are led to expect.
The skill advertises media transcription but, per the finding, may also download arbitrary remote files, manage partial downloads, and write local files beyond the narrow user-visible task. If true in the implementation, this expands the attack surface to SSRF-like retrieval, unwanted persistence, and broader file-handling than users are led to expect.
The skill advertises media transcription but, per the finding, may also download arbitrary remote files, manage partial downloads, and write local files beyond the narrow user-visible task. If true in the implementation, this expands the attack surface to SSRF-like retrieval, unwanted persistence, and broader file-handling than users are led to expect.
The skill advertises media transcription but, per the finding, may also download arbitrary remote files, manage partial downloads, and write local files beyond the narrow user-visible task. If true in the implementation, this expands the attack surface to SSRF-like retrieval, unwanted persistence, and broader file-handling than users are led to expect.
The entire skill documentation, examples, prompts, and contact instructions are presented only in Chinese, and the workflow assumes Chinese-language usage without offering an alternative language or opt-in choice. This can violate language or locale policy where skills should not force a specific language absent user selection or a clearly documented regional justification.
The README defines broad natural-language trigger examples such as '总结一下这个视频的核心观点' and maps them directly to command execution patterns. In an agent setting, this can cause ordinary conversational requests to be misclassified as a tool invocation, leading to unintended upload of local files or fetching remote URLs for cloud transcription.
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
4. 同时传入文件路径与任务ID,优先执行 `--id`,忽略 `--file`
5. 无自定义 prompt 时,默认完整转录视频全部文字
| 用户自然语言指令 | 自动生成命令 |
| -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| 视频提取 https://example.com/video.mp4 中的文字 | `node scripts/video2text/index.js --file "https://example.com/video.mp4"` |
| 把本地 /path/to/your/video.mp4 改成小红书风格的文案 | `node scripts/video2text/index.js --file "/path/to/your/video.mp4" --prompt "改写成小红书风格的文案"` |
The skill declares access to an environment variable (GUAIKEI_API_TOKEN) but does not define an explicit tool scope such as permissions or allowed-tools. In agent environments, undeclared capability boundaries make it harder to enforce least privilege and can allow the skill to run with broader access assumptions than users expect.
The metadata and description contain dense keyword-style trigger language designed to maximize activation across many adjacent tasks. In context, this increases the chance of accidental invocation and unintended transfer of user media/content to the vendor service, which is risky because the skill is networked and depends on a third-party tokenized API.
The activation guidance is extremely broad and encourages the skill to trigger for a wide range of common writing, summarization, and content-creation intents. In an agentic system, overbroad routing can cause sensitive local files or user-provided links to be sent to a third-party cloud service when the user may only want generic text assistance.
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
当用户用自然语言下达指令时,按以下映射生成命令,保证识别与执行一致:
| 用户自然语言指令 | 生成的命令 |
| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| 提取 https://example.com/video.mp4 里的文字 | `node scripts/video2text/index.js --file "https://example.com/video.mp4"` |
| 总结这个视频的核心观点 https://example.com/video.mp4 | `node scripts/video2text/index.js --file "https://example.com/video.mp4" --prompt "总结这个视频的核心观点"` |
The manifest description lists many generic use cases such as transcription, meeting notes, course breakdowns, livestream review, and content creation, but it does not specify how or when the skill should be invoked versus other skills. In a manifest file, this kind of broad natural-language scope can create ambiguous activation conditions and increase the chance of unintended invocation.
The description is entirely written in Chinese and advertises outputs such as Chinese-platform copywriting for Xiaohongshu and Douyin, but it does not indicate whether users can choose another language or locale. Under the policy, forcing a specific language or locale without opt-in can be a natural-language policy concern.
This file's comments, parameter error messages, and operation labels are all written in Chinese, including user-visible error text such as "token 必须是非空字符串" and labels passed to API requests. That enforces a specific language/locale without offering a user choice or documenting a justified locale constraint, which matches the policy violation criteria.
This code contains natural-language content such as the comment at L24-L25 and multiple user-facing status/error messages in Chinese, but there is no indication that the skill is region-specific or that users can opt into this language. That can violate language/locale policy by forcing a specific language on users without choice.
The string literal instructs the user in Chinese and includes remediation guidance only in that language. This is a natural-language policy concern because the file imposes a specific language for user-facing messaging without any opt-in or alternative locale handling.
The string literals shown to users are entirely in Chinese, and the file provides no indication that this skill is China-specific or that users can choose another language. This creates a natural-language locale policy issue because the skill effectively forces a specific language for important operational messaging without opt-in.
The comment makes strong privacy and data-handling assurances ('no leakage, no retention, only used for transcription, automatically deleted') that are not enforced anywhere in this function. In a skill that uploads user videos/audio to a remote service, this creates a trust and compliance risk: users may submit sensitive recordings based on guarantees the code does not technically verify, enforce, or audit.
The banner text is hard-coded in Chinese, which imposes a specific language on users without any indication of opt-in, fallback, or regional justification. This matches the language/locale policy concern for natural-language content in code files.
This file contains natural-language comments and user-facing CLI messages exclusively in Chinese, including errors and help output. Under the stated policy, forcing a specific language without offering user choice or documenting a justified locale constraint is a language/locale policy violation.
The natural-language documentation and user-facing strings in this file are written only in Chinese, indicating a fixed language choice with no opt-in or alternative locale. Under the stated policy, forcing a specific language without user choice is a locale-policy concern.
No suspicious patterns detected.