Back to skill

Security audit

Taobao Advisor

Security checks for vulnerabilities and agentic risk

Overview

The skill is an advisory Taobao ad-planning helper that generates local reports and does not show evidence of executing ad changes, exfiltrating data, or installing persistence.

Install in a virtual environment, review and pin dependencies before operational use, and expect the skill to create local logs and report files. Do not rely on it for live ad-account automation; its own documentation says all ad changes must be manually reviewed and executed.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (1)

T08 · Insecure Dependencies

Warning
Location
requirements.txt:5
Finding
Unpinned and Unverified Third-Party Dependencies## Vulnerability Details **File Location**: `requirements.txt:5-16`; installation instruction at `README.md:7` **Vulnerability Type**: Supply-chain exposure through mutable dependency resolution **Risk Level**: Medium ### Vulnerable Code `requirements.txt:5-16`: ```text # HTTP requests requests>=2.31.0 # Data processing pandas>=2.0.0 openpyxl>=3.1.0 # Environment variable loading python-dotenv>=1.0.0 # Logging colorlog>=6.7.0 ``` `README.md:7`: ```bash pip install -r requirements.txt ``` ### Technical Analysis All third-party packages use open-ended minimum-version constraints. Consequently, the installation does not reproduce a fixed, previously reviewed dependency set: pip may select any later compatible release and additional mutable transitive dependencies. No lock file or cryptographic hashes are supplied to verify package artifacts. If an allowed future release or one of its transitive dependencies is compromised, following the documented installation command could install attacker-controlled code. Python packages can execute code during package installation and subsequently when imported by the application. The declared `requests` and `colorlog` packages are not used by the inspected application code. Retaining unnecessary dependencies expands the number of packages and transitive components that must remain trustworthy without providing current functionality. This finding does not establish that any package currently named in the file is malicious. It identifies unsafe and non-reproducible dependency management that creates a viable supply-chain attack path. ### Attack Path 1. An attacker compromises a future release of a listed package, its distribution account, or an eligible transitive dependency. 2. The malicious release remains compatible with an open-ended constraint such as `requests>=2.31.0`. 3. A user follows the documentation and runs `pip install -r requirements.txt`. 4 ...[truncated 915 chars]
Remediation
## Remediation Suggestions 1. Remove `requests` and `colorlog` unless concrete runtime functionality requires them. 2. Pin every direct dependency to an exact, reviewed version rather than using open-ended minimum constraints. 3. Generate a fully resolved lock file that also fixes all transitive dependency versions. 4. Record SHA-256 hashes for approved distributions and install with pip hash verification, such as `--require-hashes`. 5. Download packages only from an explicitly configured, trusted package index. 6. Review dependency release notes and vulnerability advisories before updating the lock file. 7. Perform dependency installation in an isolated virtual environment under a non-administrative account. 8. Add automated dependency and artifact-integrity scanning to the release process.
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (21)

Credential Access

High
Category
Privilege Escalation
Content
```bash
# 复制环境变量模板
copy .env.example .env

# 编辑 .env 文件(如使用淘宝 API)
notepad .env
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
# 复制环境变量模板
copy .env.example .env

# 编辑 .env 文件(如使用淘宝 API)
notepad .env
```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
# 复制环境变量模板
copy .env.example .env

# 编辑 .env 文件(如使用淘宝 API)
notepad .env
```
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill advertises itself as read-only and non-executing, but it declares runtime requirements and command examples that imply code execution and file generation while providing no explicit tool scope such as permissions or allowed-tools. That mismatch creates an authorization gap: an agent platform may expose environment access or file-writing capability beyond what the manifest constrains, enabling data leakage, unsafe local writes, or behavior inconsistent with the claimed read-only purpose.

Natural-Language Policy Violations

Medium
Confidence
91% confidence
Finding
This code file contains user-facing natural-language descriptions and CLI help entirely in Chinese, presenting the skill as operating in a fixed language/locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless a justified regional constraint is documented, which is not present here.

Scope Creep

Medium
Confidence
98% confidence
Finding
The skill declares read-only API permissions, but it immediately creates a logs directory and writes to advisor.log. This is a real integrity/scope mismatch: even if no remote state is changed, the component performs local filesystem writes beyond a strict read-only interpretation, which can violate sandbox, policy, or operator expectations.

Scope Creep

Medium
Confidence
99% confidence
Finding
This function creates a reports directory and writes an XLSX file to disk, contradicting the stated read-only permission model. The danger is primarily unauthorized persistence and misleading operators about the skill's actual capabilities, not direct account takeover or ad manipulation.

Scope Creep

Medium
Confidence
99% confidence
Finding
The optimization advice path persists an adjustment sheet to disk, again exceeding the claimed read-only scope. In this skill's context it does not execute advertising changes, but it still introduces local write side effects that can surprise users or violate least-privilege assumptions.

Scope Creep

Medium
Confidence
99% confidence
Finding
The review report generator writes report files to disk despite the skill advertising read-only permissions. This is a true mismatch vulnerability because trust boundaries are defined by declared capabilities, and undisclosed persistence can create policy, compliance, or operational risk.

Scope Creep

Medium
Confidence
99% confidence
Finding
The lifecycle guide function writes a Markdown file to the local filesystem, which is outside a strict read-only scope. Although the content is advisory and the author intent appears non-malicious, the undeclared write capability still weakens operator trust and can enable unwanted persistence of business data.

Natural-Language Policy Violations

Low
Confidence
82% confidence
Finding
The file’s natural-language labels, comments, stage names, and business terminology are entirely in Chinese, and there is no indication that users may choose another language or that the skill is intentionally restricted to a Chinese-language audience. Under the stated policy, a skill that effectively forces one language without opt-in can be a natural-language policy concern.

Natural-Language Policy Violations

Low
Confidence
84% confidence
Finding
The file contains a Chinese-only descriptive comment ("投流方案生成&全周期运营指导 Skill 依赖"), which suggests a fixed language context without any indication that users can choose their preferred language. Under the policy, language constraints should be optional or explicitly justified when they are region-specific.

Unpinned Dependencies

Low
Category
Supply Chain
Content
# 版本:1.0.0

# HTTP 请求
requests>=2.31.0

# 数据处理
pandas>=2.0.0
Confidence
93% confidence
Finding
Using a lower-bounded but unpinned dependency for requests makes builds non-reproducible and can unexpectedly pull in a vulnerable or behavior-changing release. In a skill that performs HTTP requests, this increases supply-chain and patch-verification risk because the exact installed version cannot be audited or guaranteed.

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); 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) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
94% confidence
Finding
The manifest does not pin requests, so it is impossible to verify whether the installed version is affected by known advisories. Given that the skill is described as read-only but uses HTTP requests, an affected version could expose credentials, request integrity, or sensitive data handling.

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.31.0

# 数据处理
pandas>=2.0.0
openpyxl>=3.1.0

# 环境变量加载
Confidence
91% confidence
Finding
An unpinned pandas version can cause non-reproducible installs and may introduce vulnerable or incompatible releases over time. While this file alone does not prove dangerous usage, dependency ambiguity is a real supply-chain weakness.

Unverifiable Dependency: pandas has 1 known advisory(ies) (CVE-2020-13091 (** DISPUTED ** pandas through 1.0.3 can unserialize and execute commands from an)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
86% confidence
Finding
Because pandas is unpinned, the project cannot demonstrate that installed versions are outside the scope of known advisories. The danger depends on how pandas is used, but unresolved version ambiguity is still a supply-chain hygiene issue.

Unpinned Dependencies

Low
Category
Supply Chain
Content
# 数据处理
pandas>=2.0.0
openpyxl>=3.1.0

# 环境变量加载
python-dotenv>=1.0.0
Confidence
92% confidence
Finding
openpyxl has had security-relevant parsing issues historically, and leaving it unpinned means deployments may resolve to unknown versions with different risk profiles. Because this skill likely handles spreadsheet data, dependency uncertainty is more relevant than for an unused library.

Unverifiable Dependency: openpyxl has 2 known advisory(ies) (CVE-2017-5992 (Improper Restriction of XML External Entity Reference in Openpyxl); CVE-2017-5992 (Openpyxl 2.4.1 resolves external entities by default, which allows remote attack)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
93% confidence
Finding
openpyxl has known historical XXE-related issues, and the lack of pinning means the deployment may resolve to an affected release without visibility. Since the skill likely processes Excel files, this materially increases the relevance of the advisory uncertainty.

Unpinned Dependencies

Low
Category
Supply Chain
Content
openpyxl>=3.1.0

# 环境变量加载
python-dotenv>=1.0.0

# 日志
colorlog>=6.7.0
Confidence
88% confidence
Finding
An unpinned python-dotenv dependency creates supply-chain uncertainty and can expose deployments to unreviewed versions. The risk is somewhat limited by the read-oriented skill context, but exact dependency control is still important.

Unverifiable Dependency: python-dotenv has 2 known advisory(ies) (CVE-2026-28684 (python-dotenv: Symlink following in set_key allows arbitrary file overwrite via ); CVE-2026-28684 (python-dotenv reads key-value pairs from a .env file and can set them as environ)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
84% confidence
Finding
python-dotenv is unpinned, so the project cannot verify whether deployed versions include known vulnerabilities. The risk is contextual and may be limited if only reading environment variables, but unresolved version ambiguity remains a security concern.

Unpinned Dependencies

Low
Category
Supply Chain
Content
python-dotenv>=1.0.0

# 日志
colorlog>=6.7.0
Confidence
87% confidence
Finding
Unpinned colorlog does not usually create direct high-impact risk, but it still weakens reproducibility and dependency integrity. Even low-risk packages should be pinned to prevent unexpected behavior or transitive issues.

Static analysis

No suspicious patterns detected.