Dev Machine Database

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill matches a database-query purpose, but its helper script embeds a MySQL root password and can exceed the promised read-only, 50-row behavior.

Review before installing. Do not use this as-is with real development data until the hardcoded password is removed and rotated, the database account is changed to read-only least privilege, SQL and shell inputs are strictly validated, and Feishu output destinations are clearly controlled.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

Anyone who can view the skill file can see the database password, and queries run with broad database privilege rather than least privilege.

Why it was flagged

The skill embeds a root MySQL credential in the distributed source while the registry lists no primary credential or required environment variable. A root credential is broader than a scoped read-only database account.

Skill content
MYSQL_USER = "root"
MYSQL_PASSWORD = "123456"  # MySQL 密码
Recommendation

Rotate this password, remove it from the skill file, use a secret manager or environment variable, and replace root with a read-only account limited to the intended databases and tables.

What this means

A mistaken or manipulated request could cause the agent to run non-read-only SQL or large queries against the development database.

Why it was flagged

The generic SQL helper only appends LIMIT to SELECT statements and does not reject INSERT, UPDATE, DELETE, DDL, multiple statements, or oversized existing LIMIT clauses, despite the skill's stated read-only scope.

Skill content
def query_mysql_docker(sql, database=DATABASE, limit=50):
    if "LIMIT" not in sql.upper() and sql.strip().upper().startswith("SELECT"):
        sql = f"{sql.rstrip(';')} LIMIT {limit}"
    cmd = f'docker exec {MYSQL_CONTAINER} mysql -u{MYSQL_USER} -p{MYSQL_PASSWORD} {database} -e "{sql}"'
Recommendation

Enforce a strict allowlist for SELECT/SHOW/DESC only, validate table and column identifiers, reject multiple statements, cap LIMIT values, and rely on a database account that cannot modify data.

What this means

A crafted query or model error could execute unintended shell commands on the development machine, not just database reads.

Why it was flagged

User/model-derived SQL is interpolated into a remote command string passed through SSH. Quotes or shell metacharacters in generated SQL, table names, or WHERE clauses could escape the mysql command on the remote host.

Skill content
cmd = f'docker exec {MYSQL_CONTAINER} mysql -u{MYSQL_USER} -p{MYSQL_PASSWORD} {database} -e "{sql}"'
returncode, stdout, stderr = ssh_command(cmd)
Recommendation

Avoid building remote shell strings from user text. Use fixed argv/wrapper scripts, robust quoting such as shlex.quote for each shell argument, and strict SQL/identifier validation.

What this means

Database rows or statistics may appear in a Feishu conversation or channel, which could expose sensitive business data if the destination is shared.

Why it was flagged

The instructions say formatted database results are sent to Feishu, but the artifacts do not specify the recipient, channel, or approval boundary. The documented tables include users, orders, stores, and clients.

Skill content
4. **格式化输出**
   - 表格形式展示
   - 添加统计信息
   - 发送到飞书
Recommendation

Confirm where Feishu output is posted, require user confirmation for sensitive results, and avoid sending raw user/order/client data to broad channels.