Back to skill

Security audit

数据库访问服务

Security checks across malware telemetry and agentic risk

Overview

This skill is a remote database-access wrapper that stores an API key locally and can run arbitrary SQL despite being described mainly as metadata retrieval.

Install only if you trust the remote xiaobenyang MCP service and are comfortable giving this skill an API key and database-query capability. Treat it as a general database query tool, not just metadata lookup, and avoid using it with credentials that can modify or delete important data.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (22)

Lp3

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding
The skill documents capabilities to read environment variables, persist secrets to local files, and call a remote network service, yet it declares only a narrow database-metadata purpose and no explicit permissions. This creates a transparency and least-privilege failure: users and platforms may authorize a seemingly harmless metadata skill that can actually access secrets, write local state, and send data externally.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The skill is presented as '数据库元数据获取' but also supports arbitrary SQL execution, secret collection from users, local persistence of API keys, and remote API access. This mismatch is dangerous because users may invoke or approve the skill under false assumptions, exposing databases or credentials to broader operations than expected.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The manifest claims the skill only retrieves database metadata, but the listed toolset includes a function for executing arbitrary SQL queries. In context, that materially expands the attack surface from harmless introspection to potentially destructive or data-exfiltrating database access.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The documentation repeats that the skill retrieves metadata, but later introduces arbitrary SQL execution without clearly flagging the additional risk. This inconsistency can mislead operators and users into trusting a much more powerful capability than intended.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The file implements a generic outbound MCP API wrapper rather than logic constrained to database metadata retrieval, which creates a capability mismatch with the declared skill purpose. In a skill advertised as database metadata access, this broader remote-call primitive can be reused to access unrelated upstream functions, increasing the risk of unintended data access or policy bypass through tool confusion.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
call_tool accepts arbitrary mcp_id, tool_name, and params and forwards them directly upstream, effectively exposing a generic remote tool invocation primitive. Because the skill context is only 'database metadata retrieval,' this unnecessary flexibility could let a caller trigger unrelated upstream capabilities, potentially causing unauthorized actions or exfiltration depending on what the remote MCP exposes.

Description-Behavior Mismatch

High
Confidence
93% confidence
Finding
The file’s behavior does not match the declared skill purpose of database metadata retrieval: it introduces storage and management of an external API credential in local state and process environment. This capability expands the trust boundary and can cause users or orchestrators to disclose, persist, or mishandle secrets they would not reasonably expect this skill to manage.

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
Persisting an API key to a local .env file is a sensitive capability not justified by the stated purpose, and it increases the chance of long-lived secret exposure through source control, backups, shared workspaces, or permissive filesystem access. Even if intended for convenience, unnecessary secret persistence creates avoidable attack surface.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The skill is ներկայացված as a database metadata retrieval service, but it exposes a generic `sql_query` tool that forwards arbitrary client-supplied SQL to the backend. This creates a significant capability mismatch: users or upstream agents may trust the skill as read-only metadata access while it can potentially perform data exfiltration, modification, or destructive operations depending on backend permissions.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The `sql_query` docstring explicitly advertises generic SQL execution, which contradicts the stated metadata-only purpose and normalizes unsafe use of the tool. Even if the backend later restricts some statements, the documented interface encourages consumers to send arbitrary SQL and increases the risk of misuse, overtrust, and accidental abuse.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill exposes arbitrary SQL execution but provides no warning or guardrails about destructive statements, privilege abuse, or sensitive-data extraction. In this context, a user or prompt injection could trigger writes, deletes, schema changes, or bulk exfiltration against the connected database or backend service.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The code writes the API key to .env automatically with no visible confirmation, warning, or indication of persistence semantics. This can lead to users unknowingly storing credentials in plaintext on disk, where they may later be exposed via repository commits, logs, archives, or local compromise.

Credential Access

High
Category
Privilege Escalation
Content
default_year: int = 2025

    def model_post_init(self, __context):
        # 强制从 .env 文件读取 XBY_APIKEY
        env_path = Path(".env")
        if env_path.exists():
            content = env_path.read_text(encoding="utf-8")
Confidence
84% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
def model_post_init(self, __context):
        # 强制从 .env 文件读取 XBY_APIKEY
        env_path = Path(".env")
        if env_path.exists():
            content = env_path.read_text(encoding="utf-8")
            for line in content.splitlines():
Confidence
84% confidence
Finding
.env"

Credential Access

High
Category
Privilege Escalation
Content
def save_api_key_to_env(api_key: str) -> bool:
    """将API key保存到.env文件"""
    try:
        env_path = Path(".env")
        lines = []
        if env_path.exists():
            lines = env_path.read_text(encoding="utf-8").splitlines()
Confidence
92% confidence
Finding
.env"

Credential Access

High
Category
Privilege Escalation
Content
def set_api_key(api_key: str) -> bool:
    """设置API key并持久化到.env"""
    if not api_key or not api_key.strip():
        return False
    api_key = api_key.strip()
Confidence
91% confidence
Finding
.env"

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0
pydantic>=2.7.0
pydantic-settings>=2.2.0
python-dotenv>=1.0.1
Confidence
95% confidence
Finding
requests>=2.31.0

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0
pydantic>=2.7.0
pydantic-settings>=2.2.0
python-dotenv>=1.0.1
Confidence
95% confidence
Finding
pydantic>=2.7.0

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0
pydantic>=2.7.0
pydantic-settings>=2.2.0
python-dotenv>=1.0.1
Confidence
94% confidence
Finding
pydantic-settings>=2.2.0

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0
pydantic>=2.7.0
pydantic-settings>=2.2.0
python-dotenv>=1.0.1
Confidence
95% confidence
Finding
python-dotenv>=1.0.1

Known Vulnerable Dependency: requests==2.31.0 — 3 advisory(ies): CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi); CVE-2026-25645 (Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility func)

Low
Category
Supply Chain
Confidence
89% confidence
Finding
requests==2.31.0

Known Vulnerable Dependency: python-dotenv==1.0.1 — 1 advisory(ies): CVE-2026-28684 (python-dotenv: Symlink following in set_key allows arbitrary file overwrite via )

Low
Category
Supply Chain
Confidence
83% confidence
Finding
python-dotenv==1.0.1

VirusTotal

64/64 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.