Back to skill

Security audit

wuxingbazi-daily

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed Chinese astrology/almanac helper, but its reminder feature asks the agent to create a persistent cron job without clear confirmation, containment, or removal instructions.

Install only if you are comfortable with a Chinese-language astrology tool and review any reminder setup carefully. Do not let it create a cron or scheduled task unless you explicitly approve the exact command, path, schedule, and removal method; treat health and investment-style suggestions as entertainment, not professional advice.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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)

T06 · System Persistence

Warning
Location
SKILL.md:183
Finding
Persistent Daily Command Execution Through a Cron Task## Vulnerability Details **File Location**: `SKILL.md`, lines 183–189 **Vulnerability Type**: Persistent scheduled execution **Risk Level**: Medium **Complete Code Snippet**: ```bash cron add --name "daily-wuxing-reminder" \ --schedule "17 8 * * *" \ --command "python3 /path/to/daily_fortune.py <day-master>" ``` ### Technical Analysis The Skill directs the Agent to register a cron task that invokes a Python script every day. Unlike a one-time calculation, this scheduled command survives the interaction in which it was created and continues executing unattended. The currently referenced `daily_fortune.py` implementation was reviewed and contains no malicious behavior. Nevertheless, persistence is established at the system or Agent-platform level. The scheduled command relies on a mutable filesystem path, so replacing or modifying the referenced script after task creation would change the code executed by the persistent task without requiring the cron entry to be recreated. This behavior is presented as a daily reminder feature rather than concealed as a backdoor. However, the instructions do not show an explicit confirmation step immediately before persistence is created, an integrity check for the executed script, or a corresponding command for removing the task. ### Attack Path 1. A user asks the Agent to configure a daily fortune reminder. 2. The Agent follows the instructions in `SKILL.md`. 3. The Agent registers the `daily-wuxing-reminder` cron task. 4. The task persists beyond the current conversation and invokes Python every day. 5. If an attacker or another process can subsequently modify or replace the script at the configured path, attacker-controlled code executes at the next scheduled run. 6. Execution occurs with the permissions of the account or service responsible for running the cron task. ### Impact Assessment The direct impact is persistent, unattended command execution with the priv ...[truncated 584 chars]
Remediation
## Remediation Suggestions 1. Require explicit, informed user confirmation immediately before creating the scheduled task. 2. Display the exact schedule, executable, arguments, execution identity, and persistence implications before confirmation. 3. Use a canonical absolute path located in a directory that unprivileged or unrelated processes cannot modify. 4. Restrict ownership and permissions on both the Python script and its parent directories. 5. Prefer a platform-native notification scheduler that does not permit arbitrary command execution. 6. If command scheduling is unavoidable, use an allowlisted launcher that invokes only the intended operation. 7. Validate the script's integrity before each execution, such as by checking a trusted cryptographic hash. 8. Document and expose a removal command for the scheduled task. 9. List the resulting task after creation and verify that its schedule and command match the user's approved configuration. 10. Avoid creating the task automatically merely because the Skill was loaded or because reminder functionality was discussed.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (14)

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding
The description presents a broader '老黄历Daily' skill that includes daily fortune reminders and Huangli auspicious/inauspicious advice in addition to BaZi and five-element analysis. The supplied code only implements a standalone BaZi/five-element calculator and formatter. It does not access calendars, generate daily fortune by date, provide reminder behavior, or compute Huangli 宜忌. The core implemented functionality aligns with the birth-chart/five-element portion of the description, but the overall declared purpose materially overstates what this code chunk actually does.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
该代码的核心功能是日期转换:通过内置农历数据在公历与农历之间换算,并附带计算年干支与生肖显示。这只覆盖了声明中的极小一部分相关背景信息,且仅限“年干支/生肖”层面。声明重点强调的是五行命理、八字分析、每日运势、黄历宜忌等占卜/分析能力,但代码中没有看到基于出生时辰的八字排盘、五行统计、命格推断、运势规则、宜忌生成等实现。因此代码实际用途与声明的主要目的存在明显偏差,应判定为不匹配。

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The skill description, headings, usage notes, and user input example are entirely in Chinese, which implies a fixed language/locale expectation for users. Under the policy, locale constraints should either provide user choice or be clearly documented as a justified region-specific limitation, neither of which is stated here.

Vague Triggers

Medium
Confidence
95% confidence
Finding
Broad activation phrases increase the chance that the skill is invoked for loosely related user requests, which can trigger unnecessary script execution or system-affecting features like reminders. In agent ecosystems, overbroad routing expands the attack surface and can cause a skill to handle inputs outside its safe, intended domain.

Natural-Language Policy Violations

Medium
Confidence
98% confidence
Finding
The natural-language instructions, examples, and user interaction patterns are all presented in Chinese, effectively forcing a single language for use of the skill. The file does not offer user opt-in for Chinese nor explain that the skill is intentionally limited to a Chinese-speaking or region-specific context.

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
The skill documents creation of cron-based reminders, which grants it a persistent system task-management capability beyond simple fortune analysis. Even if framed as a convenience feature, scheduled task creation can be abused to establish persistence, repeatedly execute code, or expand the skill's operational scope without strong user scrutiny.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The documented `cron add` command modifies system scheduling and introduces persistence through a shell command path. In an agent setting, this can create recurring execution of local scripts and normalizes privileged task installation for a use case that should not require direct system automation.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
This Python skill is a code file, so SQP-3 applies. The module description and later user-facing output strings are entirely in Chinese, and the CLI usage messages also assume Chinese, with no opt-in or alternative locale support; that is a natural-language locale policy issue under the stated rule.

Natural-Language Policy Violations

Medium
Confidence
98% confidence
Finding
The generated analysis report strings are all emitted in Chinese, including headings and personality descriptions, with no user-selectable locale. Because SQP-3 applies to all file types and specifically covers forced language or locale without user opt-in, this is a policy-relevant finding.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The file provides health-related recommendations tied to organs, body systems, foods, and lifestyle actions without any disclaimer that the content is traditional belief content rather than medical advice. In a skill explicitly intended to answer questions about daily guidance and personal destiny traits, users may treat these recommendations as actionable wellness advice and delay appropriate medical care or make unsuitable health decisions.

Natural-Language Policy Violations

Low
Confidence
95% confidence
Finding
This Python file contains user-facing descriptions and output strings in Chinese only, including the module docstring and the generated report text. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation when no language choice or locale justification is provided.

Natural-Language Policy Violations

Low
Confidence
91% confidence
Finding
This code file contains natural-language descriptions and user-facing messages exclusively in Chinese, including the module docstring and CLI output. Under the policy rule, forcing a specific language without user opt-in can be a locale-policy issue when no alternative language or justification is provided.

Natural-Language Policy Violations

Low
Confidence
95% confidence
Finding
This markdown file presents all skill content in a single language and does not indicate that the user can select another language or that the skill is intentionally limited to a Chinese-language audience. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation.

Natural-Language Policy Violations

Low
Confidence
90% confidence
Finding
This markdown file presents all instructional/content text exclusively in Chinese and does not mention that the skill is intended only for Chinese-speaking users or offer any language choice. Under the policy rule for language or locale constraints, forcing a single language without user opt-in can be a natural-language policy violation.

Static analysis

No suspicious patterns detected.