Back to skill

Security audit

Subtitle Translator

Security checks across malware telemetry and agentic risk

Overview

This skill is a local subtitle translation helper with an optional loopback visualizer, and the sensitive behaviors I found are disclosed and aligned with that purpose.

Install only if you are comfortable with a skill that reads the subtitle file you choose, writes work/output files, can start a local-only visualizer, and stores visualizer task history in your home directory. Stop the visualizer when done and manually clear ~/.agent-subtitle-translator/visualizer if subtitle contents are sensitive or the machine is shared.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • 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)

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill instructs the agent to perform file reads/writes, execute shell commands, and make HTTP requests to a local service, but it does not declare any explicit permissions or capability boundaries. This creates a transparency and policy-enforcement gap: an agent or platform may execute broader actions than a user expects, including processing arbitrary local files and interacting with a persistent service.

Session Persistence

Medium
Category
Rogue Agent
Content
1. **Check the environment.** Run from the Skill directory. Install or verify the Python dependency from `requirements.txt`, confirm Python can run `scripts/subtitle_tool.py --help`, confirm Node.js satisfies the package requirement (Node 20 or newer), install Node dependencies once with `npm install`, and run `npm run build` successfully.
2. **Check the Web service.** Request `http://127.0.0.1:4317/api/health`. Reuse the service only when the response is healthy, identifies `subtitle-visualizer`, and reports a compatible Skill version. Otherwise start the service after resolving any occupied-port conflict, then record the printed URL.
3. **Open the Web page when requested.** Navigate the selected browser to the printed local URL and report whether it loaded. Browser access is an observation step and does not grant the page task-input or translation permissions.
4. **Run the visualizer workflow.** Run `identify`, then create the task, start batches, submit and validate responses, and compose through `visualizer:bridge`. Keep reporting each meaningful operation in the Agent response.

The commands in the sections below describe the direct deterministic CLI workflow and the safety rules implemented by the bridge. During an Agent visualizer run, use the equivalent bridge commands after the local service is healthy. Do not compose the same task and output path through both workflows.
Confidence
80% confidence
Finding
The visualizer workflow introduces session persistence by storing task history under ~/.agent-subtitle-translator/visualizer and reusing an existing local Web service across runs. Persisting subtitle task data and agent/model metadata beyond the current job can leak sensitive contents or create cross-task data exposure, especially on shared systems or when later tasks attach to an existing service instance.

VirusTotal

63/63 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

Detected: suspicious.dangerous_exec, suspicious.dynamic_code_execution

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
src/python-cli.ts:64

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
tests/test_subtitle_tool.py:21