T09 · Insecure Skill Coding Practices
- Location
sqlbot_skills.py:865- Finding
SQLBot Authentication Token Disclosed to Cross-Origin Resources During Dashboard Export
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly does what it claims, but its dashboard export path handles SQLBot authentication too broadly and should be reviewed before installation.
Review this skill before installing. It requires SQLBot API credentials, can switch the active SQLBot workspace, query datasources and chats, read dashboard data, save local context, and write dashboard exports. Avoid using dashboard export with untrusted dashboard content or non-isolated networks until auth headers are scoped to the SQLBot origin, and consider pinning Playwright/Chromium and protecting the .env file.
sqlbot_skills.py:865SQLBot Authentication Token Disclosed to Cross-Origin Resources During Dashboard Export
SKILL.md:23Unpinned Playwright and Chromium Installation Creates a Supply-Chain Risk
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
python3 sqlbot_skills.py workspace list
python3 sqlbot_skills.py --env-file ./.env workspace list
切换工作空间:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
python3 sqlbot_skills.py workspace list
python3 sqlbot_skills.py --env-file ./.env workspace list
```
切换工作空间:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
python3 sqlbot_skills.py workspace list
python3 sqlbot_skills.py --env-file ./.env workspace list
```
切换工作空间:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
python3 sqlbot_skills.py workspace list
python3 sqlbot_skills.py --env-file ./.env workspace list
```
切换工作空间:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
python3 sqlbot_skills.py workspace list
python3 sqlbot_skills.py --env-file ./.env workspace list
```
切换工作空间:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
python3 sqlbot_skills.py workspace list
python3 sqlbot_skills.py --env-file ./.env workspace list
```
切换工作空间:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Create .env next to SKILL.md:
cp .env.example .env
Minimum required fields:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
Create .env next to SKILL.md:
cp .env.example .env
Minimum required fields:
The skill uses 'file_write' capability that is not listed in its permissions. This may indicate deceptive intent or missing permission declarations.
The skill uses 'network' capability that is not listed in its permissions. This may indicate deceptive intent or missing permission declarations.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
from urllib.request import HTTPCookieProcessor, OpenerDirector, Request, build_opener
API_PREFIX = "/api/v1"
DEFAULT_ENV_FILE = ".env"
DEFAULT_STATE_FILE = ".sqlbot-skill-state.json"
DEFAULT_DASHBOARD_EXPORT_FORMAT = "jpg"
SCREENSHOT_EXPORT_FORMATS = {"jpg", "jpeg", "png"}
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
如果你要把它安装成 Claude Code Skill,可以直接复制整个目录:
mkdir -p ~/.claude/skills/sqlbot-workspace-dashboard
cp -R /path/to/SQLBot-skills/* ~/.claude/skills/sqlbot-workspace-dashboard/
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
如果你要把它安装成 Claude Code Skill,可以直接复制整个目录:
mkdir -p ~/.claude/skills/sqlbot-workspace-dashboard
cp -R /path/to/SQLBot-skills/* ~/.claude/skills/sqlbot-workspace-dashboard/
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
如果你要把它安装成 Claude Code Skill,可以直接复制整个目录:
mkdir -p ~/.claude/skills/sqlbot-workspace-dashboard
cp -R /path/to/SQLBot-skills/* ~/.claude/skills/sqlbot-workspace-dashboard/
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
Create .env next to SKILL.md:
cp .env.example .env
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
Project skill:
mkdir -p .claude/skills/sqlbot-workspace-dashboard
cp -R /path/to/SQLBot-skills/* .claude/skills/sqlbot-workspace-dashboard/
The local storage initialization hard-codes user.language to zh-CN, which imposes a specific locale on users regardless of their preference. This is a natural-language policy concern because the file does not offer a language choice or document a justified region-specific restriction.
This markdown file describes that switching the current datasource updates a skill-local state file, which affects local user data and future skill behavior. While persistence is mentioned later in the Notes section, the operation description itself does not warn users up front that invoking the switch will write local state.
The skill silently persists workspace and datasource context to a local state file, which can surprise users and leak operational context to other local users or processes. While it does not store API secrets, hidden persistence still creates a privacy and safety issue in shared environments.
Dashboard export writes files to a caller-supplied path and creates parent directories without warning, which can overwrite or create files unexpectedly. In agent contexts, unannounced file creation can have side effects on the host filesystem and may expose exported data if written to unsafe locations.
No suspicious patterns detected.