Back to skill

Security audit

Guangzhou Daily News

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to be a Guangzhou news helper, but it overstates automatic fetching, scheduled pushes, and WeChat delivery compared with the included code.

Review before installing. The included code does not actually fetch news, send WeChat messages, or configure cron despite the documentation claiming those behaviors. If used, confirm any scheduler or push setup separately, expect Markdown files under ~/News, and install dependencies in a virtual environment with pinned versions where possible.

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

Note
Location
SKILL.md:98
Finding
Unpinned Third-Party Dependency Installation## Vulnerability Details **File Location**: `SKILL.md`, line 98 **Vulnerability Type**: Unpinned third-party dependencies **Risk Level**: Low **Relevant Code Snippet**: ```bash pip3 install requests beautifulsoup4 ``` ### Technical Analysis The installation instructions request third-party packages without specifying exact versions or validating package hashes. Consequently, the installed code depends on whichever package versions the configured Python package index serves at installation time. The listed package names are established packages, and the audited project contains no evidence that they are currently malicious. However, the absence of version constraints and integrity verification creates a supply-chain weakness: future incompatible or compromised releases, a compromised package-maintainer account, or an untrusted package-index configuration could cause users to install code that was not reviewed with this skill. Python package installation can execute package build hooks and other installation logic. Installed packages also execute code when imported. In this project, `beautifulsoup4` is imported by `scripts/fetch_news.py`, so a compromised installed release could execute when article parsing is invoked. ### Attack Path 1. A user follows the dependency installation command documented in `SKILL.md`. 2. `pip3` resolves the latest available versions from the user's configured package index because no versions or hashes are specified. 3. An attacker would first need to compromise an upstream package release, its publishing account, or the package index used by the victim. 4. The user installs the attacker-controlled distribution. 5. Malicious code executes during package installation or later when the dependency is imported. This is a conditional supply-chain attack path. No malicious dependency or direct remote payload execution was identified in the audited files. ### Impact Assessment A compromised d ...[truncated 440 chars]
Remediation
## Remediation Suggestions 1. Declare dependencies in a dedicated lock or requirements file using reviewed, exact versions, for example: ```text requests==<reviewed-version> beautifulsoup4==<reviewed-version> ``` 2. Generate and require cryptographic hashes for all distributions: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 3. Review pinned releases before updating them and use automated dependency vulnerability scanning. 4. Install dependencies inside an isolated virtual environment rather than into the system Python environment. 5. Avoid running package installation as `root` or with `sudo`. 6. Remove `requests` from the installation instructions if it is not required by the final implementation; the audited script does not import it. 7. Document the trusted package index explicitly where deployment environments may use custom or mirrored indexes.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (6)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding
The skill's claimed behavior does not match what is actually documented or apparently implemented: it promises live news retrieval and WeChat push support, yet the finding indicates no real fetching, local file writes as a side effect, and only message generation rather than delivery. This mismatch is dangerous because users and orchestration systems may grant trust or automation based on false expectations, causing silent data handling or persistence they did not knowingly approve.

Lp3

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding
The skill describes writing Markdown output to ~/News and configuring scheduled tasks, but it does not declare any explicit permissions or allowed tools. Undeclared file-write capability weakens user consent and platform enforcement, because the agent may perform local side effects that are not visible from the manifest or scope configuration.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The description advertises automatic WeChat pushes and scheduled execution without a clear warning that the skill may act without an immediate user prompt and may affect outbound messaging or user data. In an automation context, hidden scheduled behavior is security-relevant because it can create persistent actions and repeated data flows that users may not realize they enabled.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The invocation phrases are broad enough to overlap with ordinary requests for local news, increasing the chance that the skill auto-runs when a user did not intend to invoke it. Because the skill also writes files and may schedule or prepare outbound messaging, accidental triggering can cause unintended side effects beyond a simple conversational response.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This code file contains user-facing natural-language strings exclusively in Chinese, including the top-level script description and console guidance. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified, which is not present here.

Natural-Language Policy Violations

Low
Confidence
81% confidence
Finding
All user-facing instructions and invocation phrases are presented only in Chinese, which can amount to a language policy constraint if the skill implicitly requires a specific language without opt-in. The file does not state that the skill is region- or language-specific by design, nor does it offer users a language choice.

Static analysis

No suspicious patterns detected.