Back to skill

Security audit

Video Narrator

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent SenseAudio text-to-speech helper that discloses its API use and credential needs, with only routine dependency and data-sharing cautions.

Install only if you are comfortable sending narration text to SenseAudio's API and exposing SENSEAUDIO_API_KEY to the runtime environment. Consider running it in a project-scoped environment and pinning dependency versions before production use.

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:14
Finding
Unpinned Third-Party Python Dependencies<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 14–18 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```yaml install: - kind: uv package: requests - kind: uv package: pydub ``` ### Technical Analysis The Skill installs `requests` and `pydub` without pinning reviewed versions or verifying package hashes. Consequently, dependency resolution may select mutable package releases available from the configured package registry at installation time. If a package publisher account, registry, release artifact, or transitive dependency is compromised, the Skill could install attacker-controlled code without any modification to the audited `SKILL.md`. Malicious Python packaging hooks may execute during package building or installation, while malicious runtime code may execute when the installed package is imported by the narration helper. This dependency behavior exceeds the minimum necessary privilege because the Skill requires only known functionality from these libraries but permits installation of arbitrary future versions. ### Attack Path 1. An attacker compromises the publisher account, release process, registry artifact, or transitive dependency associated with an unpinned package. 2. The attacker publishes a malicious release that still satisfies the unrestricted package specification. 3. A user installs the Skill after the malicious release becomes the version selected by the package resolver. 4. Attacker-controlled code executes during package installation, building, or subsequent import. 5. The malicious code accesses resources available to the Skill process, potentially including `SENSEAUDIO_API_KEY`, narration scripts, generated media, and other files accessible to the user account. 6. The code may transmit collected information or perform additional actions with the privileges of the installation or runtime process. ### Impact Assessment Successful exploitation cou ...[truncated 707 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin every direct dependency to a reviewed, exact version, for example: ```yaml install: - kind: uv package: requests==<reviewed-version> - kind: uv package: pydub==<reviewed-version> ``` 2. Maintain a lockfile containing resolved transitive dependency versions. 3. Verify distributions with cryptographic hashes and require hash checking during installation where supported. 4. Use only an explicitly trusted package registry and prevent unintended fallback to public or untrusted indexes. 5. Periodically scan pinned direct and transitive dependencies for known vulnerabilities. 6. Review dependency updates before changing pins rather than automatically resolving the newest release. 7. Perform installation and execution in a restricted environment with minimal filesystem, credential, and network access. 8. Avoid exposing `SENSEAUDIO_API_KEY` to dependency installation processes when it is only needed at runtime. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

External Transmission

Medium
Category
Data Exfiltration
Content
Use the official SenseAudio TTS rules summarized below:

- HTTP endpoint: `POST https://api.senseaudio.cn/v1/t2a_v2`
- Model: `SenseAudio-TTS-1.0`
- Max text length per request: `10000` characters
- `voice_setting.voice_id` is required
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Use the official SenseAudio TTS rules summarized below:

- HTTP endpoint: `POST https://api.senseaudio.cn/v1/t2a_v2`
- Model: `SenseAudio-TTS-1.0`
- Max text length per request: `10000` characters
- `voice_setting.voice_id` is required
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
def synthesize_segment(text, voice_id, speed=1.0, pitch=0, vol=1.0):
    response = requests.post(
        API_URL,
        headers={
            "Authorization": f"Bearer {API_KEY}",
Confidence
70% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

No suspicious patterns detected.