Back to skill

Security audit

文档处理服务

Security checks across malware telemetry and agentic risk

Overview

The skill appears to mix a documentation-service identity with unrelated gaokao service code while asking for and persisting an API key.

Review this skill carefully before installing. Do not provide an API key until the publisher fixes the mixed service identity, clearly documents the intended backend, and explains or changes how credentials are stored and deleted.

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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (16)

Lp3

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding
The skill advertises capabilities that imply environment access, file read/write, and network use, but it does not declare corresponding permissions. This weakens transparency and consent, making it harder for users or hosting platforms to assess what the skill can actually access, especially because it also handles API keys and writes configuration.

Description-Behavior Mismatch

High
Confidence
96% confidence
Finding
The workflow text contains a mismatched example calling `search_schools(...)`, which is unrelated to the stated documentation-processing service. This identity and behavior inconsistency is a strong supply-chain red flag because it suggests copied or repurposed instructions, making users and agents more likely to invoke unintended functionality or trust a misleading package.

Intent-Code Divergence

Medium
Confidence
94% confidence
Finding
The documented project structure names `xiaobenyang_gaokao_skill`, which contradicts the declared Atlas Docs service identity. Such provenance inconsistency undermines trust in the package and can conceal accidental or deliberate inclusion of unrelated code paths, configuration handling, or external API behavior.

Description-Behavior Mismatch

High
Confidence
94% confidence
Finding
The configuration clearly targets a different product/domain than the declared skill: the manifest describes a documentation-processing service, while the code references '小笨羊高考', XBY_GAOKAO-prefixed settings, and an unrelated remote base URL. This kind of identity mismatch is dangerous because it can cause the skill to send user data or credentials to an unintended backend and strongly suggests code reuse or supply-chain confusion.

Intent-Code Divergence

Medium
Confidence
90% confidence
Finding
The class docstring identifies the component as a different skill ('小笨羊高考Skill配置') than the manifest. While a docstring alone is not exploitable, in context it reinforces the broader identity mismatch and increases the likelihood that this package contains repurposed code with incorrect endpoints, secrets handling, or behavior.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill instructs the agent to ask for an API key and persist it via `set_api_key(api_key)` without clearly warning the user that the credential will be stored or explaining retention and protection. This creates a sensitive-data handling risk because users may disclose secrets without informed consent, and insecure persistence could expose those credentials to other processes or future sessions.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The function persists the API key to a local .env file automatically, without any confirmation, disclosure, or safeguards around file permissions. This is risky because users may expect transient use of a secret, but the code silently stores it on disk where it can be recovered by other local processes, accidental commits, backups, or workspace sharing.

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 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
96% 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
94% 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
95% 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
91% 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
88% confidence
Finding
python-dotenv==1.0.1

VirusTotal

63/63 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.