Back to skill

Security audit

Byted Bytehouse Data Asset Analyzer

Security checks for vulnerabilities and agentic risk

Overview

This skill appears intended for ByteHouse metadata analysis, but it runs mutable remote code with the user's full environment and persists potentially sensitive database metadata.

Install only if you are comfortable running remotely sourced ByteHouse MCP code. Use an isolated environment with no unrelated secrets, a least-privilege read-only ByteHouse account, and an approved output directory for generated metadata files. Prefer a version pinned to a reviewed commit and an environment-variable allowlist before using it with production databases.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/data_asset_analyzer.py:76
Finding

Mutable Remote Payload Retrieved and Executed at Runtime

Content
View full analysis
=1.0.0", # ] # /// ``` ```python server_params = StdioServerParameters( command='/root/.local/bin/uvx', args=[ '--from', 'git+https://github.com/volcengine/mcp-server@main#subdirectory=server/mcp_server_bytehouse', 'mcp_bytehouse', '-t', 'stdio' ], env=env ) ``` ### Technical Analysis The analyzer invokes `uvx` with a Git dependency referencing the mutable `main` branch of an external repository. Consequently, the code executed by the Skill can change after this package has been reviewed, without any modification to the local Skill files. The dependency has no immutable commit reference, release tag verification, artifact hash, or signature validation. The script-level `mcp>=1.0.0` declaration is also open-ended, allowing later versions to be selected. The most direct risk, however, is the explicit retrieval and execution of the remote Git payload. Because the fetched MCP server executes as a local subprocess, it runs with the operating-system identity and environment of the user invoking the analyzer. This establishes a remote code-execution channel controlled by the current contents of the external branch. ### Attack Path 1. An attacker compromises the upstream repository, a maintainer account, or another part of its publishing workflow. 2. The attacker introduces malicious code into the referenced `main` branch under the ByteHouse MCP server subdirectory. 3. A user invokes `scripts/data_asset_analyzer.py`. 4. The script runs `uvx --from git+https://github.com/volcengine/mcp-server@main...`. 5. `uvx` retrieves and executes the altered MCP server. 6. The malicious process runs with the invoking user's permissions and receives the ...[truncated 805 chars]
Remediation
View remediation
#subdirectory=server/mcp_server_bytehouse', 'mcp_bytehouse', '-t', 'stdio' ] ``` 2. Prefer a trusted, versioned release artifact over installing directly from a source branch. 3. Verify package hashes or signatures before execution and maintain a lockfile containing exact versions and integrity metadata. 4. Pin the `mcp` dependency to a reviewed exact version rather than using `mcp>=1.0.0`. 5. Perform dependency updates through an explicit review process rather than resolving new code during ordinary Skill execution. 6. Run the MCP server in a sandbox or restricted service account with limited filesystem and network access. ]]>

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/data_asset_analyzer.py:72
Finding

Downloaded MCP Subprocess Receives the Entire Parent Environment

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (9)

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
96% confidence
Finding

Using os.environ.copy() harvests all environment variables and makes them available to the spawned MCP server process. In this skill, that is especially dangerous because the child process is launched from a remotely sourced package, so secrets beyond the intended ByteHouse credentials may be exposed to code outside the user's direct review.

Content

Scanner excerpt · scripts/data_asset_analyzer.py (reported line 81)May include surrounding context.

python
os.makedirs(output_dir, exist_ok=True)
    
    # 从环境变量获取配置
    env = os.environ.copy()
    
    # MCP Server参数
    server_params = StdioServerParameters(

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill title and the entire user-facing README are written in Chinese, with no indication that other languages are supported or that Chinese is required for a region-specific or compliance-driven reason. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding

The skill declares no explicit tool scope even though the documentation clearly indicates access to environment variables, MCP-based database connectivity, and writing analysis output to disk. Without an allowlist or permission boundary, an agent may invoke broader capabilities than the user expects, increasing the chance of credential access, unintended database enumeration, or uncontrolled persistence of sensitive metadata.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The documentation instructs users to export live ByteHouse credentials and then perform full schema/catalog/lineage extraction, but it omits warnings that schema names, column names, comments, and CREATE TABLE statements can contain sensitive business metadata. In practice, this can lead to over-collection and exposure of internal data model details through an agent using privileged access without informed consent or handling guidance.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill documents persistent writing of schema, catalog, and lineage JSON files to disk without warning that these outputs may contain sensitive infrastructure and data-model information. Persisting this metadata in a local output directory increases the risk of later disclosure through backups, shared workspaces, artifact collection, or other agents reading the files.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script copies the full process environment and passes it to an external MCP server process, which may include database credentials and unrelated secrets such as tokens or cloud keys. This unnecessarily broad credential exposure expands the trust boundary to a separate process fetched from a remote source, increasing the chance of secret leakage or misuse.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script dynamically fetches and executes an MCP server package from a GitHub branch at runtime using uvx --from git+https://...@main. This creates a supply-chain and remote-code-execution risk because the code being run is not pinned to an immutable version or vendored locally, and any compromise or change in the upstream repository can alter what executes in the user's environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The script writes database schema, comments, and lineage information to local JSON files without explicit user consent or a clear disclosure that sensitive metadata will be persisted. Even if table contents are not exported, schema and comments can contain confidential business logic, identifiers, or internal system details that remain exposed on disk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

Natural-language strings in the module docstring and console output are presented exclusively in Chinese, which imposes a specific language on users without offering alternatives. Under the stated policy, language-specific behavior should be optional or clearly justified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.