T09 · Insecure Skill Coding Practices
- Location
scripts/opensubtitles-api.sh:5- Finding
Unvalidated API Host Can Receive OpenSubtitles Credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly aligned with OpenSubtitles lookup and subtitle context use, but it has credential-handling and file-boundary weaknesses users should review before installing.
Install only if you are comfortable giving the agent an OpenSubtitles API key and, for downloads, account credentials or a token. Keep OPENSUBTITLES_BASE_URL unset unless you verified it came directly from OpenSubtitles, do not use shared or writable subtitle cache directories, and treat download-link requests as account actions that may consume quota.
scripts/opensubtitles-api.sh:5Unvalidated API Host Can Receive OpenSubtitles Credentials
scripts/subtitle-context.sh:24Cache-Only File Restriction Can Be Bypassed Through Symlinks or Non-Canonical Paths
The skill is framed as read-only subtitle/context retrieval, but it also performs authenticated login and obtains download links using credentials or tokens. Even if these actions are not destructive, the mismatch can mislead operators and downstream policy systems into granting trust or permissions under an incomplete description, which is dangerous in security-sensitive environments.
The skill is framed as read-only subtitle/context retrieval, but it also performs authenticated login and obtains download links using credentials or tokens. Even if these actions are not destructive, the mismatch can mislead operators and downstream policy systems into granting trust or permissions under an incomplete description, which is dangerous in security-sensitive environments.
Code or instructions that leak agent conversation context to external services, potentially exposing sensitive user interactions.
OPENSUBTITLES_TOKEN=... {baseDir}/scripts/opensubtitles-api.sh download-link --file-id 123
### Extract context at timestamp
After downloading an `.srt` file (default window: 10 minutes before timestamp):
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).
### Login / Logout (token)
`POST /login` (username + password) returns `token` and `base_url`.
`DELETE /logout` destroys token.
Rate limits for login: **1 req/sec, 10/min, 30/hour**. If 401, stop retrying.
If `base_url` is `vip-api.opensubtitles.com`, include JWT token on all requests.
The skill declares shell-based capabilities and provides executable command examples, but does not declare any explicit tool scope such as allowed-tools or permissions. That omission weakens governance and review because the runtime may permit broader shell access than the skill’s read-only description suggests, increasing the chance of unintended command execution or misuse.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
set -euo pipefail
API_ROOT="https://api.opensubtitles.com/api/v1"
base_url() {
if [[ -n "${OPENSUBTITLES_BASE_URL:-}" ]]; then
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
set -euo pipefail
API_ROOT="https://api.opensubtitles.com/api/v1"
base_url() {
if [[ -n "${OPENSUBTITLES_BASE_URL:-}" ]]; then
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
set -euo pipefail
API_ROOT="https://api.opensubtitles.com/api/v1"
base_url() {
if [[ -n "${OPENSUBTITLES_BASE_URL:-}" ]]; then
The skill metadata and usage text present this as a read-only subtitle/context capability, but the script also supports authenticated login and download-link generation. That mismatch expands the skill's effective privileges and can mislead downstream agents or users into providing credentials or invoking capabilities they did not intend to enable.
Labeling the tool as read-only while documenting login and download-link operations is a security-signaling flaw that can cause users, orchestrators, or policy systems to treat the skill as lower risk than it really is. In an agent setting, this kind of capability misrepresentation increases the chance of unauthorized credential use or data transfer.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
url+="?${qs}"
fi
curl -s -L \
-H "Accept: application/json" \
-H "Api-Key: ${OPENSUBTITLES_API_KEY}" \
-H "User-Agent: ${OPENSUBTITLES_USER_AGENT}" \
This is a markdown file, so SQP-2 applies to omissions in the skill description. The document describes sending usernames, passwords, and bearer/JWT tokens but does not include any warning about sensitive credential handling, storage, or transmission, which affects user privacy and account security.
No suspicious patterns detected.