Back to skill

Security audit

Sql Data Analyst Release 1.7.0 20261015

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its stated local data-analysis purpose, but it ships a vulnerable Parquet/Arrow parsing dependency in a tool meant to process local files, so it should be reviewed before installation.

Install only if you are comfortable with a paid platform authorization check and local workspace persistence. Avoid processing untrusted Parquet/Arrow files until the pyarrow pin is upgraded to a patched version, and treat the delete command as a permanent local dataset removal operation.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (29)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

Creating virtual environments, installing packages, validating releases, and running doctor checks are privileged setup behaviors far beyond ordinary local analytics. If not clearly disclosed and tightly scoped, they increase supply-chain and host-modification risk under a misleadingly simple description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Creating virtual environments, installing packages, validating releases, and running doctor checks are privileged setup behaviors far beyond ordinary local analytics. If not clearly disclosed and tightly scoped, they increase supply-chain and host-modification risk under a misleadingly simple description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Creating virtual environments, installing packages, validating releases, and running doctor checks are privileged setup behaviors far beyond ordinary local analytics. If not clearly disclosed and tightly scoped, they increase supply-chain and host-modification risk under a misleadingly simple description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Creating virtual environments, installing packages, validating releases, and running doctor checks are privileged setup behaviors far beyond ordinary local analytics. If not clearly disclosed and tightly scoped, they increase supply-chain and host-modification risk under a misleadingly simple description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

Creating virtual environments, installing packages, validating releases, and running doctor checks are privileged setup behaviors far beyond ordinary local analytics. If not clearly disclosed and tightly scoped, they increase supply-chain and host-modification risk under a misleadingly simple description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

Creating virtual environments, installing packages, validating releases, and running doctor checks are privileged setup behaviors far beyond ordinary local analytics. If not clearly disclosed and tightly scoped, they increase supply-chain and host-modification risk under a misleadingly simple description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Creating virtual environments, installing packages, validating releases, and running doctor checks are privileged setup behaviors far beyond ordinary local analytics. If not clearly disclosed and tightly scoped, they increase supply-chain and host-modification risk under a misleadingly simple description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Creating virtual environments, installing packages, validating releases, and running doctor checks are privileged setup behaviors far beyond ordinary local analytics. If not clearly disclosed and tightly scoped, they increase supply-chain and host-modification risk under a misleadingly simple description.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: pyarrow==21.0.0 — 2 advisory(ies): CVE-2026-25087 (Apache Arrow: Potential use-after-free when reading IPC file with pre-buffering); CVE-2026-25087 (Use After Free vulnerability in Apache Arrow C++. This issue affects Apache Arr)

High
Category
Supply Chain
Confidence
92% confidence
Finding

The runtime pins pyarrow==21.0.0, and the supplied advisory indicates a use-after-free issue in Apache Arrow when reading IPC data. This skill explicitly processes local data files, including Parquet/Arrow-related formats, so a crafted local file could plausibly trigger memory corruption in native Arrow components during parsing.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: pytest==8.4.2 — 2 advisory(ies): CVE-2025-71176 (pytest has vulnerable tmpdir handling); CVE-2025-71176 (pytest has vulnerable tmpdir handling)

High
Category
Supply Chain
Confidence
80% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: pyarrow==21.0.0 — 2 advisory(ies): CVE-2026-25087 (Apache Arrow: Potential use-after-free when reading IPC file with pre-buffering); CVE-2026-25087 (Use After Free vulnerability in Apache Arrow C++. This issue affects Apache Arr)

High
Category
Supply Chain
Confidence
96% confidence
Finding

The lockfile pins pyarrow==21.0.0, and the finding reports a known high-severity use-after-free vulnerability in Apache Arrow when reading crafted IPC data. This skill is specifically intended to analyze local CSV/JSON/XLSX/Parquet data, so it is plausible that untrusted or externally sourced data could be processed; if vulnerable parsing paths are reached, this could cause process crashes and potentially memory corruption with code-execution implications depending on exploitability.

Content

No source excerpt is available for this finding.

Unvalidated Output Injection

High
Category
Output Handling
Confidence
95% confidence
Finding

Model output is used without validation or sanitization. Unvalidated output injected into downstream contexts (SQL, shell, HTML) enables injection attacks and arbitrary code execution.

Content

Scanner excerpt · runtime/src/sql_data_analyst_local/isolation.py (reported line 215)May include surrounding context.

python
# Submitted SQL executes only after DuckDB external access is disabled.
        connection.execute("SET enable_external_access=false")
        row_limit = int(limits["max_rows"]) + 1
        cursor = connection.execute(
            f"SELECT * FROM ({sql}) AS _bounded_query_result LIMIT {row_limit}"
        )
        columns = [

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The allowed operation set includes "dataset.delete", which exceeds the manifest's stated read-only local analysis/reporting scope. Exposing destructive capability in an authorization client for a read-only skill creates clear risk of scope creep, misuse, or future code paths enabling deletion under the guise of harmless analysis.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill declares no explicit tool scope or permissions even though its documented behavior includes environment-variable access, local file reads/writes, and network communication. This weakens transparency and reviewability, increasing the chance that users or hosts will authorize broader capabilities than expected.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest description and the entire user-facing skill documentation are presented exclusively in Chinese. Under the policy criteria, forcing a specific language without an explicit user choice or opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · references/SECURITY.md (reported line 47)May include surrounding context.

md
- 发布构建器只接受真实、无凭据的 HTTPS origin、非空 Ed25519 公钥映射,以及与规范化公钥 JSON 匹配的 SHA-256。
- 发布物包含公钥,不包含签名私钥。Runner 会把内嵌公钥 bundle 与盖章 SHA-256 再次匹配。
- `SHA256SUMS` 覆盖发布文件;构建器与安装器都验证。缺少盖章、占位 origin、空 trust、哈希不符或被篡改时拒绝。
- 安装器仅支持 macOS/Linux;WSL2 走 Linux 分支。只允许 Python 3.12/3.13、用户拥有的真实目录和包内 `.venv`,不使用 sudo 或系统 site-packages。

## 稳定错误

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · references/USAGE.md (reported line 11)May include surrounding context.

md
PYTHON_BIN="./runtime/.venv/bin/python"
WORK_DIR="${TMPDIR:-/tmp}/sql-data-analyst-example"
mkdir -p "$WORK_DIR"
chmod 700 "$WORK_DIR"
sha256_file() {
    if command -v sha256sum >/dev/null 2>&1; then
        sha256sum "$1" | awk '{print $1}'

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The CLI performs remote authorization and ticket verification for paid operations before executing ostensibly local data analysis. That creates an unexpected network dependency and causes local dataset metadata and content-derived fingerprints to be sent to a platform service, which conflicts with the stated local/read-only use case and broadens the trust boundary unnecessarily.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill exposes a delete command even though the described use case is local analysis and read-only SQL/report generation. This expands the capability from analysis into destructive state changes, creating a risk of unintended or unauthorized dataset removal by callers who trust the documented read-only behavior.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The code initializes a platform client using an API key from the environment, enabling external service access not expected for a local SQL analysis tool. In this context, environment-sourced credentials plus hidden remote access increase the risk of secret misuse, unintended data disclosure, and behavior that operators may not anticipate.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The delete method removes a dataset tree by unlinking files and removing directories recursively, which is a destructive and potentially irreversible operation. While the implementation is careful, this file provides no confirmation prompt, user-visible logging, or explicit warning comment/docstring on the deletion behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module for a supposedly local, read-only data analysis skill performs outbound authorization and billing requests to a remote platform, which materially expands the trust boundary and contradicts the stated capability. This creates privacy, transparency, and policy risks because local analysis inputs are indirectly tied to remote service usage and billing without clear justification in the skill description.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The remote authorization path introduces external network dependency and billing logic into a skill advertised for local SQL/data analysis, creating an unexpected channel for metadata disclosure and operational control by a third party. Even if only fingerprints and identifiers are sent, this undermines the user's expectation of purely local execution and increases attack surface.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The code rejects any authorization response whose billing currency is not exactly "CNY". This hard-coded locale/currency constraint is a natural-language policy concern because it forces a specific regional setting without any visible user choice or justification in the file.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file is entirely written in Chinese and does not indicate that users can choose another language or locale. Under the natural-language policy rule, forcing a specific language without user opt-in is a policy concern unless the locale restriction is clearly documented and justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.