Back to skill

Security audit

语音合成 Gemini 2.5 TTS

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed dLazy Gemini text-to-speech wrapper with normal cloud/API and credential handling, but users should note the third-party CLI install and a documentation mismatch in the output example.

Install only if you are comfortable using dLazy's hosted service and npm CLI. Prefer npx or a local install over npm -g, review the @dlazy/cli source/package before use, specify the desired voice language, and avoid sending prompts or files you do not want processed by dLazy.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:5
Finding
Third-Party CLI Execution Without Integrity Verification<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:5, 53-59`; equivalent instructions in `SKILL-cn.md:5, 53-59` **Vulnerability Type**: Unverified third-party npm dependency execution **Risk Level**: Medium ### Vulnerable Code From `SKILL.md`: ```yaml metadata: {"clawdbot":{"emoji":"🤖","requires":{"bins":["npm","npx"]},"install":"npm install -g @dlazy/cli@1.2.3","installAlternative":"npx @dlazy/cli@1.2.3","homepage":"https://github.com/dlazy-ai/cli","source":"https://github.com/dlazy-ai/cli","author":"dlazyai","license":"see-repo","npm":"https://www.npmjs.com/package/@dlazy/cli","configLocation":"~/.dlazy/config.json","apiEndpoints":["api.dlazy.com","files.dlazy.com"]},"openclaw":{"systemPrompt":"When invoking this skill, use dlazy gemini-2.5-tts -h for help."}} ``` ```bash npx @dlazy/cli@1.2.3 <command> ``` ```bash npm install -g @dlazy/cli@1.2.3 ``` The same installation and execution mechanisms appear in `SKILL-cn.md`: ```yaml metadata: {"clawdbot":{"emoji":"🤖","requires":{"bins":["npm","npx"]},"install":"npm install -g @dlazy/cli@1.2.3","installAlternative":"npx @dlazy/cli@1.2.3","homepage":"https://github.com/dlazy-ai/cli","source":"https://github.com/dlazy-ai/cli","author":"dlazyai","license":"see-repo","npm":"https://www.npmjs.com/package/@dlazy/cli","configLocation":"~/.dlazy/config.json","apiEndpoints":["api.dlazy.com","files.dlazy.com"]},"openclaw":{"systemPrompt":"当调用此技能时,可以使用 dlazy gemini-2.5-tts -h 查看帮助信息。"}} ``` ```bash npx @dlazy/cli@1.2.3 <command> ``` ```bash npm install -g @dlazy/cli@1.2.3 ``` ### Technical Analysis The Skill depends on and executes `@dlazy/cli@1.2.3`, but the dependency implementation is not included in the audited project. Pinning the version reduces exposure to unexpected version upgrades, but it does not cryptographically verify the retrieved artifact. The project provides no package lockfile, checksum, signature-validation step, vendored source, or reproducible-build verification. Both document ...[truncated 2014 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Vendor and audit the required CLI implementation or distribute it through a controlled, reviewed build process. 2. Publish cryptographic checksums or signed provenance for the exact package artifact and verify them before execution. 3. Commit a lockfile containing integrity metadata where the deployment model supports it. 4. Prefer a project-local, isolated installation instead of `npm install -g`, reducing persistence and system-wide exposure. 5. Disable npm lifecycle scripts with `--ignore-scripts` when they are not strictly required, and explicitly review any required scripts. 6. Run the CLI in a least-privilege sandbox or container with restricted filesystem, credential, and network access. 7. Avoid exposing unrelated environment variables or files to the CLI process. 8. Verify that `@dlazy/cli@1.2.3` corresponds to a reviewed source revision and use reproducible builds to confirm that the published artifact matches that source. 9. Document package verification and incident-response procedures, including API-key rotation if dependency compromise is suspected. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Ae1

High
Category
analysis-evasion
Content
[English](./SKILL.md) · [中文](./SKILL-cn.md)
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Vague Triggers

Medium
Confidence
96% confidence
Finding
该技能将“文本转语音”“生成语音”等通用短语列为触发关键词,但未限定使用场景、平台上下文或排除条件。这些词在普通对话中也很常见,容易让代理在非预期情况下匹配并调用该技能。

Intent-Code Divergence

Medium
Confidence
98% confidence
Finding
The skill is documented throughout as a Gemini 2.5 text-to-speech capability that generates audio, but the sample output shows an output object with `type: "image"`, a `.png` URL, and `mimeType: "image/png"`. This is not merely incomplete documentation; it actively contradicts the stated behavior of producing speech/audio results.

Whitespace Padding

Medium
Category
Prompt Injection
Content
## 错误处理

| Code | 错误类型                         | 示例信息                                                                                                                 |
| ---- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| 401  | 未授权 (API Key缺失或无效)       | `ok: false, code: "unauthorized", message: "API key is missing or invalid"`                                                              |
| 501  | 缺少必填参数                     | `error: required option '--prompt <prompt>' not specified`                                                               |
Confidence
70% confidence
Finding
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.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The trigger keywords "text to speech" and "generate speech" are generic phrases that can appear in ordinary user requests, making unintended activation more likely. The file does not provide exclusion conditions or a narrower invocation scope to distinguish when this specific skill should activate.

Intent-Code Divergence

Medium
Confidence
98% confidence
Finding
The documented output format claims this TTS skill returns an image (`type: "image"`, `result.png`) even though the skill is explicitly for audio generation. This inconsistency can mislead an agent or downstream automation into mishandling outputs, applying the wrong validation logic, or routing data to inappropriate consumers, which is especially risky in agentic pipelines that trust documented schemas.

Whitespace Padding

Medium
Category
Prompt Injection
Content
## Error Handling

| Code | Error Type                         | Example Message                                                                                                          |
| ---- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| 401  | Unauthorized (No API Key)          | `ok: false, code: "unauthorized", message: "API key is missing or invalid"`                                                              |
| 501  | Missing required parameter         | `error: required option '--prompt <prompt>' not specified`                                                              |
Confidence
70% confidence
Finding
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.

Natural-Language Policy Violations

Low
Confidence
81% confidence
Finding
文档中将 `--voice_language` 的默认值设置为 `cmn`,并以中文说明为主,但未要求代理在生成前确认用户期望的输出语言。对于多语言 TTS 技能,默认强制特定语言可能与用户语言偏好不一致,构成语言/locale 选择上的自然语言政策风险。

Static analysis

No suspicious patterns detected.