Back to skill

Security audit

kesha-voice-kit

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent local voice toolkit, but its install path asks users or agents to run mutable remote/global installers with broad local code execution authority.

Review the install commands before using this skill. Prefer package-manager or pinned installation methods where possible, avoid piping remote installers directly into a shell, run it as a normal non-admin user, and be aware that installation persists a global CLI plus model assets and can change OpenClaw audio/TTS behavior.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T03 · Remote Payload Retrieval and Execution

Error
Location
README.md:31
Finding

Unverified Remote Installer Is Piped Directly into a Command Shell

Content
View full analysis

Vulnerability Details

File Location: README.md, lines 31–32
Vulnerability Type: Remote payload retrieval and immediate execution
Risk Level: High

bash
curl -fsSL https://bun.sh/install | bash        # or: brew install oven-sh/bun/bun
# Windows: powershell -c "irm bun.sh/install.ps1 | iex"

Technical Analysis

The documented installation procedures pass a mutable network response directly to Bash or PowerShell. Neither command pins an installer version, verifies a cryptographic signature or checksum, nor provides an inspection boundary between downloading and executing the content.

The URL appears to use Bun's official domain, which reduces typo-squatting risk, but domain and TLS trust alone do not establish payload immutability. A compromise of the publisher's infrastructure, domain, CDN, installer-generation process, or signing account could change the script after this Skill has been audited.

This behavior is not required for the Skill's voice-processing functionality. The README already identifies Homebrew and other package-based installation options that avoid directly piping a response into a shell.

Attack Path

  1. An attacker compromises an upstream service involved in serving bun.sh/install or bun.sh/install.ps1.
  2. The attacker replaces the expected installer response with commands that perform unauthorized actions.
  3. A user follows the Quick Start instructions.
  4. curl | bash or irm | iex executes the response immediately, without local review or integrity verification.
  5. The payload operates with all permissions available to the invoking user and can download or launch additional components.

Impact Assessment

Successful exploitation provides arbitrary command execution with the invoking user's privileges. The payload could read or modify user-accessible files, access credentials available to that account, alter shell configuration, install additional software, or ...[truncated 150 chars]

Remediation
View remediation

Remediation Suggestions

  • Make a signed operating-system package manager installation method the primary recommendation.
  • Do not pipe downloaded content directly into a shell.
  • If a script installer must be supported, download it to a local file first.
  • Pin the installer to a specific release rather than a mutable endpoint.
  • Publish and verify a cryptographic signature or a checksum obtained through an independently protected channel.
  • Allow users to inspect the downloaded script before execution.
  • Explicitly instruct users not to run the installer with sudo or from an elevated PowerShell session unless a documented operation requires it.
  • For example, use a workflow equivalent to:
    bash
    curl -fSLo bun-install.sh "https://example.invalid/versioned/bun-install.sh"
    echo "EXPECTED_SHA256  bun-install.sh" | sha256sum --check -
    less bun-install.sh
    bash bun-install.sh
    
    The real URL and digest must come from a trusted, version-specific publisher manifest.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:9
Finding

Unpinned Global Package and Runtime Asset Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 9–13; also documented in README.md, lines 35–39
Vulnerability Type: Unpinned third-party package and downstream asset installation
Risk Level: Medium

SKILL.md contains:

yaml
install:
  - kind: bash
    cmd: bun add -g "@drakulavich/kesha-voice-kit"
  - kind: bash
    cmd: kesha install

The corresponding README workflow contains:

bash
# 2. Install Kesha:
bun add -g @drakulavich/kesha-voice-kit
kesha --version                                 # confirms `kesha` resolved on PATH
kesha install --plan                            # preview exact download/disk sizes first — downloads nothing
kesha install        # ~2.5 GB on Linux/Windows; ~0.6 GB on Apple Silicon, whose CoreML

Technical Analysis

The package installation does not specify an exact reviewed version or integrity value. Consequently, the package manager resolves the package version at installation time, and its effective contents may differ from those available during this audit.

The newly installed executable is then trusted to run kesha install, which downloads substantial engine and model assets. The reviewed project contains only documentation and Skill instructions, not the package implementation, download manifest, or verification logic. The audit therefore cannot independently confirm whether package lifecycle behavior or downloaded assets are cryptographically authenticated.

The package scope matches the linked npm project, and no evidence of typo-squatting or a currently malicious package was found. The vulnerability is the mutable, unverified supply-chain trust path rather than proof that the named package is presently malicious.

Attack Path

  1. An attacker compromises the package publisher account, package registry, release automation, or another upstream distribution component.
  2. The attacker publishes a modified release under the same unp ...[truncated 1003 chars]
Remediation
View remediation

Remediation Suggestions

  • Pin the CLI to an exact audited version, such as @drakulavich/kesha-voice-kit@X.Y.Z, rather than resolving the current release.
  • Pin and verify package integrity using a trusted lockfile or registry-provided integrity metadata.
  • Document whether the package defines lifecycle scripts and disable them during installation when they are not necessary.
  • Publish signed release artifacts and a signed, versioned manifest covering every engine binary and model downloaded by kesha install.
  • Verify cryptographic hashes and signatures before executing binaries or loading downloaded assets.
  • Fail closed when verification is unavailable or unsuccessful.
  • Keep kesha install --plan as a preview step, but extend it to display exact artifact versions, source URLs, hashes, signatures, and destination paths.
  • Prefer installation in a dedicated, non-administrative account or isolated environment and restrict write access to the minimum directories needed for the CLI and model cache.
  • Preserve offline installation and corporate mirror options using the same signature-verification requirements.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (2)

External Script Fetching

High
Category
Supply Chain
Confidence
96% confidence
Finding

The README instructs users to execute a remote install script directly via curl ... | bash, which bypasses review of the downloaded content and gives the remote server immediate code execution on the user's machine. If the hosting site, DNS, TLS termination, or distribution pipeline were ever compromised, users following these instructions could run attacker-controlled code during installation.

Content

Scanner excerpt · README.md (reported line 31)May include surrounding context.

bash
# 1. Install Bun (skip if you have it) — Linux & macOS:
curl -fsSL https://bun.sh/install | bash        # or: brew install oven-sh/bun/bun
# Windows: powershell -c "irm bun.sh/install.ps1 | iex"
# if `bun --version` fails, reload PATH: exec $SHELL -l

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger keyword list contains very broad terms such as "say," "opus," "privacy," and common audio-related words that may appear in many unrelated conversations. In an agent environment, this can cause the skill to activate outside its intended scope, leading to unnecessary execution of local binaries, unintended handling of user audio/text, or workflow hijacking from more appropriate skills.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.