Back to skill

Security audit

A Stock Daily Express

Security checks for vulnerabilities and agentic risk

Overview

This skill coherently fetches A-share market data and generates Chinese social-media style stock summaries, with no evidence of hidden persistence, credential access, exfiltration, or destructive behavior.

Install only in an environment where you are comfortable running Python and akshare network data retrieval. Pin and review dependency versions if you need stronger supply-chain control, and edit generated market summaries before posting, especially any text that could be read as investment advice.

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
SKILL.md:89
Finding
Unpinned Third-Party Package Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 89–90 **Vulnerability Type**: Unpinned and unverified third-party dependencies **Risk Level**: Medium ```bash npx clawhub install a-stock-daily-express pip install akshare ``` ### Technical Analysis The documented installation process resolves mutable package versions at installation time. It does not specify reviewed versions, lockfiles, package hashes, or other integrity constraints. The `pip install akshare` command installs the latest package version and its transitive dependencies available from the configured Python package index. Likewise, `npx` may retrieve and execute package tooling dynamically. Consequently, the code ultimately installed can differ from the code that was originally reviewed. This creates a supply-chain exposure if a package publisher account, registry artifact, transitive dependency, or package-resolution source is compromised. The finding does not establish that either named package is currently malicious; the weakness is the absence of version and integrity controls. ### Attack Path 1. An attacker compromises a referenced package, one of its transitive dependencies, its publisher account, or the package source used by the victim. 2. The attacker publishes a malicious release that remains compatible with the unconstrained installation command. 3. A user follows the installation instructions and runs the unpinned command. 4. The package manager resolves and downloads the attacker-controlled release. 5. Malicious installation hooks or subsequently imported package code execute in the user's environment. ### Impact Assessment Successful exploitation could execute arbitrary code with the privileges of the user performing the installation or running the Skill. Depending on those privileges and the environment, this could permit access to user-readable files, modification of project or environment data, theft of accessible credentia ...[truncated 273 chars]
Remediation
## Remediation Suggestions - Pin every direct dependency to a reviewed, exact version. - Record transitive dependency versions in committed lockfiles. - For Python dependencies, use a requirements file containing cryptographic hashes and install with `pip install --require-hashes -r requirements.txt`. - Use a controlled package index or explicitly document the expected trusted registry. - Replace ephemeral `npx` execution with a verified, pinned local installation where possible. - Run installation and report generation as an unprivileged user in an isolated environment. - Add automated dependency vulnerability and provenance checks to the release process. - Review and deliberately update dependency pins rather than resolving unrestricted latest releases during installation.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (8)

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Content
---
name: a-stock-daily-express
description: 📈 A股每日快报自动生成 - 自动获取今日大盘行情、涨跌排名、热点板块,一键生成小红书/公众号文章,直接就能发。炒股懒人必备,每天省你半小时整理时间。
---

# 📈 A 股每日快报 - 自动生成

自动获取今日 A 股行情 → 统计涨跌 → 分析热点板块 → 生成适合小红书/公众号的每日快报,直接复制就能发。炒股懒人必备,每天省半小时整理时间。

## ✨ 特色功能

| 功能 | 说明 |
|------|------|
| 📊 **自动行情获取** | 自动获取今日大盘点位、
Confidence
80% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding
The installation command uses `npx clawhub` without a pinned version, which allows the latest published package to be fetched at install time. If the package or one of its distribution paths is compromised, users could execute unexpected code during installation or skill setup.

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
The manifest describes a skill that fetches A-share market data and generates publishable daily content. While network data retrieval and text generation fit that purpose, spawning a local interpreter via child_process adds an execution capability beyond the stated scope and is not necessary from the manifest alone.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The skill invokes a Python subprocess via execSync to fetch market data, which is a safety-relevant operation for code files. While there is console output later for overall progress, there is no warning or explanation at the execution point that the script will spawn an external interpreter/process.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The report-generation functions produce user-facing content entirely in Chinese, and platform aliases also assume Chinese-language usage. Under the language/locale policy criterion, this forces a specific language without any visible user opt-in or alternative locale selection.

Missing User Warnings

Low
Confidence
84% confidence
Finding
The skill fetches market data from external third-party services, but the description does not clearly warn users that outside network access and third-party data dependencies are involved. This reduces transparency and can mislead users about privacy, reliability, and trust boundaries when the skill is run.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
The package description specifies automatic generation of articles for 小红书/公众号 and is written entirely as a Chinese A-share daily brief, which implies a fixed language/locale context without stating user choice. This can violate the language/locale policy when the skill appears to mandate a specific locale rather than offering opt-in or documenting the constraint.

Natural-Language Policy Violations

Low
Confidence
77% confidence
Finding
The generated Chinese-language summaries include prescriptive financial language such as '持股待涨就好' and '控制好仓位,等待机会', which reads as investment guidance embedded in natural-language output. This is a policy-quality concern because the skill emits advisory language directly rather than neutral reporting, and there is no qualifying disclaimer or user opt-in.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/daily-generator.js:45