voice-agent

ISSUES FOUND max severity HIGHSkillSpector Do not install 55 registry clawhub.ai last scanned 1 scan

5 findings (1 high, 4 medium), mainly unauthorized tool use, data exfiltration, resource abuse. Most recent scan 2026-02-07.

This voice agent skill presents MEDIUM-HIGH security risks primarily related to external service dependencies and credential handling. The skill communicates with a localhost Docker container API without authentication, automatically pulls Docker images without version pinning (supply chain risk), and potentially mounts AWS credentials into containers. While designed for legitimate voice transcription functionality, the lack of authentication, version pinning, and file path validation creates multiple attack vectors. The skill would benefit from stronger isolation, authentication mechanisms, and supply chain security controls. The missing optional metadata fields reduce transparency but are low severity. No direct prompt injection or malicious code was detected in the instruction body.

Scanner's overall assessment (LLM analyzer)

Second scanner: NVIDIA SkillSpector

Independent static run, no language model, over the same files as the Cisco scan above. How the two scanners compare across the whole corpus: Two scanners, one corpus.

What this skill does

Local Voice Input/Output for Agents using the AI Voice Agent API.

Package
4 files, 9.7 KB
SKILL.md
213 words, 7 sections
Code
Python (1), Shell (1)
Version
1.0.0
Homepage
https://github.com/ricardotrevisan/ai-conversational-skill

SKILL.md covers: Voice Agent · Behavior Guidelines · Tools · Transcribe File · Synthesize to File · Health Check · Service Management

Findings

HIGH Hardcoded Localhost API Endpoint Without Authentication Data Exfiltrationllm

The skill communicates with a localhost API (http://localhost:8000) without any authentication mechanism. While localhost services are typically trusted, this creates a security risk if: (1) the Docker container is compromised, (2) other malicious processes on localhost can intercept/manipulate traffic, or (3) the container is misconfigured to expose ports externally. The skill sends audio files and receives transcriptions without verifying the identity or integrity of the API endpoint.

scripts/client.py:9

API_URL = "http://localhost:8000"
Remediation: Implement authentication tokens or API keys for localhost communication. Add TLS/SSL even for localhost to prevent local interception. Verify the Docker container's identity before sending data. Consider using Unix domain sockets instead of TCP for true local-only communication.
MEDIUM Undeclared network usage Unauthorized Tool Usestatic

Skill code uses network libraries but doesn't declare network requirement

Remediation: Declare network usage in compatibility field or remove network calls
MEDIUM Docker Container Auto-Pull Without Version Pinning Resource Abusellm

The start.sh script automatically pulls the latest Docker image (trevisanricardo/ai-voice-backend) without version pinning. This creates a supply chain risk where a compromised or malicious image update could be automatically downloaded and executed on the user's system. The script uses 'docker pull $IMAGE_NAME || true' which silently fails if the pull encounters issues, potentially running outdated or cached images.

scripts/start.sh

echo "☁️ checking for image updates..."
docker pull $IMAGE_NAME || true
Remediation: Pin the Docker image to a specific version tag (e.g., trevisanricardo/ai-voice-backend:1.0.0). Implement image signature verification using Docker Content Trust. Add explicit error handling for failed pulls instead of silently continuing. Document the expected image hash/digest for verification.
MEDIUM Potential Credential Exposure via Docker Volume Mount Data Exfiltrationllm

The start.sh script attempts to mount ~/.aws credentials into the Docker container. While the actual mount command is truncated, this pattern indicates the skill may be providing AWS credentials to an external Docker container. If the container or image is compromised, these credentials could be exfiltrated. The comment 'Assuming .env and ~/.aws exist' suggests environment variables and AWS credentials are being shared with the container.

scripts/start.sh

# Assuming .env and ~/.aws exist in the current directory context or user home
# We need to resolve absolute paths for volumes usually, but ~ works in shell expansion.
Remediation: Avoid mounting AWS credentials into containers unless absolutely necessary. Use IAM roles or temporary credentials instead. If credentials must be mounted, use read-only mounts and minimal permission scopes. Document why AWS credentials are needed for a voice transcription service. Implement credential rotation and monitoring.
MEDIUM Unrestricted File Path Access for Audio Transcription Unauthorized Tool Usellm

The transcribe function accepts arbitrary file paths from user input without validation or sandboxing. While the skill is designed to transcribe audio files, there's no verification that the file is actually an audio file or that it's within an expected directory. A malicious user could potentially point the skill to sensitive files, which would then be uploaded to the localhost API (and potentially logged or processed in unexpected ways).

scripts/client.py

def transcribe(filename):
    if not os.path.exists(filename):
        print(f"❌ File not found: {filename}")
        return
    try:
        print(f"📤 Transcribing {filename}...")
Remediation: Implement file path validation to restrict access to specific directories. Verify file types using magic bytes, not just extensions. Add file size limits to prevent resource exhaustion. Use a whitelist of allowed directories. Implement path traversal protection (check for ../ sequences).

What is in the package

FileKindSize
CHANGELOG.mddoc502 B
SKILL.mddoc1.7 KB
scripts/client.pyscript5.0 KB
scripts/start.shscript2.5 KB

External hosts referenced

github.com

Hostnames that appear in the skill's files. Referencing a host is not a finding; compare against the findings above and the skill's stated purpose.

Environment variables referenced

PORT

Package contents recorded 2026-10-22. The scan above ran against the version current at scan time; the two can differ if the skill has since been updated.

What we checked

What we did not check

Sources