Back to skill

Security audit

ClawARR Suite

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent media-stack control tool, but it handles powerful service keys, browser storage, package installs, and Docker/SSH commands in ways that deserve careful review before installation.

Install only if you are comfortable giving the agent operational control of your media stack. Use least-privilege service keys where possible, avoid running the sudo curl installer, avoid unpinned pip installs unless you trust those packages, do not paste secrets into the browser UI on a shared origin, prefer HTTPS or a trusted management LAN, and review Docker/SSH environment values before using companion-service commands.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (6)

T03 · Remote Payload Retrieval and Execution

Error
Location
references/setup-guide.md:359
Finding
Remote Installer Executed Directly with Root Privileges<![CDATA[ ## Vulnerability Details **File Location**: `references/setup-guide.md:359` **Vulnerability Type**: Remote payload retrieval and privileged execution **Risk Level**: Critical ### Vulnerable Code ```bash curl -s https://lidarr.audio/install.sh | sudo bash ``` ### Technical Analysis The setup guide pipes a mutable response from an external URL directly into a root-privileged Bash process. The installer is not pinned to a reviewed version and is not authenticated through a detached signature or a pinned cryptographic checksum. TLS protects the connection in transit under normal conditions, but it does not protect against compromise of the upstream website, its hosting environment, its certificate/DNS infrastructure, or a future unauthorized modification of the installer. The effective code executed by this instruction can therefore change after the Skill has been reviewed. Using `sudo bash` grants the downloaded payload unrestricted root access, exceeding the privileges required merely to download and inspect an installer. ### Attack Path 1. An attacker compromises the installer host, its release process, DNS resolution, or another relevant delivery component. 2. The attacker replaces or modifies `install.sh` with a malicious shell payload. 3. A user or agent follows the setup guide. 4. `curl` downloads the attacker-controlled response. 5. The response is immediately interpreted by `sudo bash`. 6. The payload executes as root without an integrity or review checkpoint. ### Impact Assessment Successful exploitation provides arbitrary root-level command execution. The payload could access all local files, steal media-service credentials, modify system configuration, install persistent services, alter firewall rules, tamper with applications, or fully compromise the host. ]]>
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not pipe remote content directly into a shell. 2. Download a version-specific installer or package to a local file: ```bash curl --fail --show-error --location \ --output lidarr-installer.sh \ https://example.invalid/releases/VERSION/lidarr-installer.sh ``` 3. Publish and pin an expected SHA-256 checksum, then verify it before execution: ```bash echo "EXPECTED_SHA256 lidarr-installer.sh" | sha256sum --check - ``` 4. Prefer a detached signature verified against a pinned vendor signing key. 5. Present the downloaded script for review before execution. 6. Run the installer without root where possible; elevate only the individual operations that require administrative access. 7. Use `curl --fail --show-error --location` so HTTP errors are not silently interpreted as shell input. ]]>

T08 · Insecure Dependencies

Error
Location
scripts/trackers.sh:150
Finding
Unpinned Traktarr and Retraktarr Packages Installed from the Active Python Package Index<![CDATA[ ## Vulnerability Details **File Location**: `scripts/trackers.sh:150-163, 208-221` **Vulnerability Type**: Unpinned executable third-party dependencies **Risk Level**: High ### Vulnerable Code ```bash if [[ "$install" == "y" ]]; then echo "" echo "Installing traktarr via pip..." if command -v pip3 &> /dev/null; then pip3 install --user traktarr elif command -v pip &> /dev/null; then pip install --user traktarr else echo "❌ pip not found. Install Python first." exit 1 fi fi ``` The same pattern is used for Retraktarr: ```bash if [[ "$install" == "y" ]]; then echo "" echo "Installing retraktarr via pip..." if command -v pip3 &> /dev/null; then pip3 install --user retraktarr elif command -v pip &> /dev/null; then pip install --user retraktarr else echo "❌ pip not found. Install Python first." exit 1 fi fi ``` Related unpinned installation instructions also appear at: - `references/traktarr-retraktarr.md:49` - `references/traktarr-retraktarr.md:52` - `references/traktarr-retraktarr.md:628` ### Technical Analysis The setup wizard resolves package names against the user's currently configured pip index without pinning package versions or verifying distribution hashes. The package and its transitive dependencies can consequently change after this Skill is audited. Python package installation may execute build backends or setup hooks during installation. Installed command-line applications are subsequently invoked and receive access to Trakt credentials, Radarr/Sonarr API keys, library information, and the user's network environment. The `--user` option limits installation to the current account but does not make arbitrary package execution safe. ### Attack Path 1. An attacker compromises a package release, maintainer account, dependency, package index, or the user's pip index configuration. 2. The setup wizard offers to install Traktarr or Retraktarr. 3. The user accepts the installatio ...[truncated 627 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin reviewed versions rather than installing unconstrained package names. 2. Use a lock file containing hashes for every package and transitive dependency: ```bash python3 -m pip install \ --require-hashes \ --requirement requirements.lock ``` 3. Install into a dedicated virtual environment rather than the user's general package environment. 4. Document the expected package index and reject untrusted index overrides where appropriate. 5. Review package provenance, ownership, release history, and dependencies. 6. Avoid automatically installing dependencies from an agent workflow; instead, display the exact locked installation plan and obtain explicit confirmation. 7. Re-audit and update the lock file deliberately when upgrading. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/recyclarr.sh:13
Finding
Remote Shell Command Injection in SSH Docker Wrappers<![CDATA[ ## Vulnerability Details **File Location**: `scripts/recyclarr.sh:13-28` **Vulnerability Type**: Shell command injection across an SSH boundary **Risk Level**: High ### Vulnerable Code ```bash run_recyclarr() { if [[ -n "$DOCKER_HOST_SSH" ]]; then ssh "$DOCKER_HOST_SSH" "${DOCKER_CMD} exec ${CONTAINER} recyclarr $*" 2>&1 elif command -v recyclarr &>/dev/null; then recyclarr "$@" 2>&1 else ${DOCKER_CMD} exec "${CONTAINER}" recyclarr "$@" 2>&1 fi } docker_exec() { if [[ -n "$DOCKER_HOST_SSH" ]]; then ssh "$DOCKER_HOST_SSH" "${DOCKER_CMD} $*" 2>&1 else ${DOCKER_CMD} "$@" 2>&1 fi } ``` Equivalent unsafe remote-command construction occurs in: - `scripts/kometa.sh:14-26` - `scripts/unpackerr.sh:12-16` Additional remote shell interpolation involving a configurable path occurs at `scripts/recyclarr.sh:93`: ```bash ssh "$DOCKER_HOST_SSH" "cat ${DOCKER_CONFIG_BASE:-/volume1/docker}/recyclarr/recyclarr.yml 2>/dev/null || echo 'No config found'" ``` ### Technical Analysis Although the SSH destination is quoted locally, the command passed to SSH is a single string interpreted by the remote login shell. `$*` flattens all arguments into unescaped text. Environment-controlled values such as `RECYCLARR_DOCKER_CMD`, `RECYCLARR_CONTAINER`, and `DOCKER_CONFIG_BASE`, along with selected command arguments, are also interpolated directly. Shell metacharacters in these values can therefore terminate the intended Docker command and introduce additional commands on the remote host. Quoting the outer local string does not prevent parsing by the remote shell. Access to the Docker socket is commonly equivalent to root-level host control, so injection into these wrappers may have greater impact than the SSH account's apparent Unix permissions suggest. ### Attack Path 1. An attacker influences an invocation argument or a relevant environment variable, such as the container name, Docker command, configuration root, sync target, library n ...[truncated 789 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Never concatenate untrusted arguments into a remote shell string with `$*`. 2. Validate environment-controlled executable and container names against strict allowlists. 3. Serialize every remote argument with robust shell escaping before passing it to SSH, for example: ```bash printf -v remote_cmd '%q ' docker exec "$CONTAINER" recyclarr "$@" ssh -- "$DOCKER_HOST_SSH" "$remote_cmd" ``` 4. Prefer a restricted remote helper with a fixed command protocol over general-purpose remote shell execution. 5. Configure SSH forced commands and a dedicated low-privilege account. 6. Restrict Docker authorization; do not grant the automation account unrestricted Docker-socket access. 7. Validate numeric parameters such as log counts and use enumerated values for commands and application types. 8. Apply the same correction to `kometa.sh` and `unpackerr.sh`. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/trakt.sh:1482
Finding
Media-Service and Trakt Credentials Written and Displayed in Plaintext<![CDATA[ ## Vulnerability Details **File Location**: `scripts/trakt.sh:1482-1524` **Vulnerability Type**: Insecure secret storage and disclosure **Risk Level**: High ### Vulnerable Code Existing configuration files are printed without redacting secret fields: ```bash echo "Current configuration:" jq '.' "$config_file" 2>/dev/null || cat "$config_file" ``` The generated file contains plaintext credentials: ```bash cat > "$config_file" <<EOF { "core": { "debug": false }, "trakt": { "client_id": "$CLIENT_ID", "client_secret": "$CLIENT_SECRET" }, "radarr": { "url": "$radarr_url", "api_key": "$radarr_key", "root_folder": "/movies", "quality_profile": "HD-1080p", "minimum_availability": "released" }, "sonarr": { "url": "$sonarr_url", "api_key": "$sonarr_key", "root_folder": "/tv", "quality_profile": "HD-1080p", "language_profile": "English" } } EOF ``` The same disclosure and storage behavior is present for Retraktarr at `scripts/trakt.sh:1722-1725` and `scripts/trakt.sh:1764-1791`. ### Technical Analysis The generated Traktarr and Retraktarr configuration files contain a Trakt client secret and Radarr/Sonarr API keys. The code does not set a restrictive umask before creation or explicitly apply mode `600` afterward. Actual permissions therefore depend on the caller's environment. The config-display commands print the complete JSON document. This sends credentials to the terminal and potentially to agent transcripts, command logs, CI output, shell-session recording, or support bundles. This contrasts with the OAuth token storage function, which explicitly applies `chmod 600`, indicating that equivalent protection is technically available but omitted here. ### Attack Path 1. A user creates a Traktarr or Retraktarr configuration. 2. The process runs under a permissive umask, resulting in a file readable by other local users, or the file is later copied without proper protection. 3. Alternat ...[truncated 731 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Set a restrictive umask before creating directories or files: ```bash umask 077 mkdir -p -- "$(dirname "$config_file")" ``` 2. Explicitly enforce directory mode `700` and file mode `600`. 3. Write to a securely created temporary file and atomically rename it. 4. Do not print complete configuration files. Redact secret fields: ```bash jq ' if .trakt then .trakt.client_secret = "***REDACTED***" else . end | if .radarr then .radarr.api_key = "***REDACTED***" else . end | if .sonarr then .sonarr.api_key = "***REDACTED***" else . end ' "$config_file" ``` 5. Read interactive secrets without terminal echo. 6. Prefer an operating-system credential store or separate protected secret file over embedding secrets in general configuration. 7. Ensure agent and diagnostic output never contains raw credentials. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
ui/index.html:629
Finding
Browser Stores API Keys Persistently and Sends Them in Plaintext URLs<![CDATA[ ## Vulnerability Details **File Location**: `ui/index.html:629-632` **Vulnerability Type**: Insecure browser-side credential storage and transport **Risk Level**: High ### Vulnerable Code The page persists the complete state, including API keys, in `localStorage`: ```javascript function load() { try { return JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}'); } catch { return {}; } } function save(data) { localStorage.setItem(STORAGE_KEY, JSON.stringify(data)); } ``` The stored credentials are then inserted into query strings: ```javascript if (app && app.type === 'arr') testUrl = `${svc.url}/api/v3/system/status?apikey=${keyInfo.key}`; else if (svc.id === 'plex') testUrl = `${svc.url}/identity?X-Plex-Token=${keyInfo.key}`; else if (svc.id === 'tautulli') testUrl = `${svc.url}/api/v2?apikey=${keyInfo.key}&cmd=server_info`; else if (svc.id === 'sabnzbd') testUrl = `${svc.url}/api?mode=version&apikey=${keyInfo.key}&output=json`; ``` Discovered service URLs are constructed with HTTP, for example at `ui/index.html:233` and `ui/index.html:273`. ### Technical Analysis `localStorage` is persistent, unencrypted, and readable by any JavaScript executing under the same origin. Display masking does not protect the underlying value. A same-origin cross-site scripting flaw, compromised browser extension, local browser-profile access, or another page sharing the origin can recover every stored credential. Placing credentials in URLs additionally exposes them to service access logs, reverse-proxy logs, browser debugging records, and network observers. Because the discovered URLs use HTTP, the requests do not provide transport confidentiality or server authentication. ### Attack Path 1. The user saves one or more API keys in the setup UI. 2. The complete values are serialized into persistent `localStorage`. 3. A malicious same-origin script, compromised extension, or attacker with browser-profile access reads the `clawarr` storag ...[truncated 577 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not persist service credentials in `localStorage`. 2. Keep credentials in memory for the active page session, or store them in a protected backend credential store. 3. If browser persistence is unavoidable, use a narrowly scoped encrypted vault that requires explicit user unlocking; do not embed the encryption key in the page. 4. Prefer authentication headers instead of query parameters where supported. 5. Support user-configured HTTPS URLs and reject plaintext transport unless the user explicitly acknowledges the risk. 6. Add a strict Content Security Policy and avoid inline script so that same-origin script injection is harder. 7. Provide a one-click action that securely clears all stored state. 8. Warn users that exported environment configuration contains plaintext secrets and do not select or copy it automatically. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/trakt.sh:1182
Finding
LAN API Keys and Viewing History Transmitted over Plaintext HTTP<![CDATA[ ## Vulnerability Details **File Location**: `scripts/trakt.sh:1182` **Vulnerability Type**: Plaintext transmission of credentials and sensitive media activity **Risk Level**: Medium ### Vulnerable Code ```bash tautulli_history=$(curl -sf "http://${CLAWARR_HOST}:8181/api/v2?apikey=${TAUTULLI_KEY}&cmd=get_history&length=500") ``` The resulting viewing history is subsequently transformed and synchronized to the declared Trakt service. Equivalent query-string credential transmission over HTTP occurs in: ```bash # scripts/analytics.sh:48 local url="http://${HOST}:8181/api/v2?apikey=${TAUTULLI_KEY}&cmd=${cmd}" # scripts/downloads.sh:44 local url="http://${HOST}:38080/api?apikey=${SABNZBD_KEY}&mode=${mode}&output=json" # scripts/dashboard.sh:155 SABNZBD_QUEUE=$(curl -sf "http://${HOST}:38080/api?apikey=${SABNZBD_KEY}&mode=queue&output=json" ...) ``` Additional occurrences include `scripts/dashboard.sh:166-168`, `scripts/letterboxd.sh:48`, `scripts/simkl.sh:323`, and `scripts/status.sh:105,115`. ### Technical Analysis The scripts assume plaintext HTTP for LAN services and frequently embed credentials in URL query parameters. HTTP provides neither confidentiality nor authenticated encryption. Query parameters are also more likely than headers to be retained in access logs, proxy logs, diagnostics, and monitoring systems. The destination is a user-configured LAN host rather than an unrelated exfiltration domain, and Trakt synchronization is declared functionality. Nevertheless, local-network placement does not guarantee a trusted or isolated transport path. ### Attack Path 1. A user configures a Tautulli, SABnzbd, or similar media service on the LAN. 2. A script issues an HTTP request containing the API key in the URL. 3. An attacker with access to the same network segment, a compromised router, proxy, DNS path, or logging intermediary observes the request. 4. The attacker extracts the API key and potentially the returned viewing or queue data. 5. T ...[truncated 373 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace fixed host/port construction with user-configurable service base URLs. 2. Prefer HTTPS and validate certificates. 3. Use authentication headers instead of URL query parameters wherever the target API supports them. 4. Where a legacy API requires query credentials, avoid logging request URLs and document the transport risk. 5. Recommend a local authenticated reverse proxy that provides TLS for services without native HTTPS support. 6. Segment media services onto a trusted management network and restrict inbound access using firewall rules. 7. Redact credentials from errors, diagnostics, process output, dashboards, and support bundles. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (178)

Missing User Warnings

High
Confidence
97% confidence
Finding
The setup instructions state that the script 'auto-discovers services, extracts API keys, verifies connections, and outputs your config' without a corresponding warning about credential harvesting, where the keys come from, how they are stored, or who can read the generated output. That is dangerous because API keys and tokens for Sonarr, Radarr, Plex, Tautulli, and related services often grant broad administrative control, and automatic extraction lowers the barrier to over-privileged access or accidental credential exposure.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
This finding identifies undeclared Docker/SSH container inspection and restart capabilities, which are materially privileged compared with ordinary media-management tasks. Remote container access can reveal environment secrets, service configuration, and allow operational disruption if restart actions are triggered on the wrong host.

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `GET /series/lookup?term=<query>` - Search for series
- `POST /series` - Add series
- `PUT /series/{id}` - Update series
- `DELETE /series/{id}` - Delete series

### Episodes
- `GET /episode` - All episodes
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
### Queue
- `GET /queue` - Download queue
- `GET /queue/{id}` - Queue item details
- `DELETE /queue/{id}?removeFromClient=true` - Remove from queue

### History
- `GET /history?pageSize=20&sortKey=date&sortDirection=descending` - History
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
### Queue
- `GET /queue` - Download queue
- `GET /queue/{id}` - Queue item details
- `DELETE /queue/{id}?removeFromClient=true` - Remove from queue

### History
- `GET /history?pageSize=20&sortKey=date&sortDirection=descending` - History
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `GET /movie/lookup/tmdb?tmdbId=<id>` - Lookup by TMDB ID
- `POST /movie` - Add movie
- `PUT /movie/{id}` - Update movie
- `DELETE /movie/{id}` - Delete movie

### Queue
- `GET /queue` - Download queue
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `GET /artist/{id}` - Single artist
- `GET /search?term=<query>` - Search
- `POST /artist` - Add artist
- `DELETE /artist/{id}` - Delete artist

### Albums
- `GET /album` - All albums
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
### Queue
- `GET /queue` - Download queue
- `DELETE /queue/{id}` - Remove from queue

### Quality Profiles
- `GET /qualityprofile` - All quality profiles
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
### Queue
- `GET /queue` - Download queue
- `DELETE /queue/{id}` - Remove from queue

### Quality Profiles
- `GET /qualityprofile` - All quality profiles
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `GET /author/{id}` - Single author
- `GET /author/lookup?term=<query>` - Search authors
- `POST /author` - Add author
- `DELETE /author/{id}` - Delete author

### Books
- `GET /book` - All books
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
- `GET /indexer/{id}` - Single indexer
- `POST /indexer` - Add indexer
- `PUT /indexer/{id}` - Update indexer
- `DELETE /indexer/{id}` - Delete indexer
- `POST /indexer/test` - Test indexer
- `POST /indexer/testall` - Test all indexers
Confidence
80% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Static analysis

No suspicious patterns detected.