Back to skill

Security audit

玄学大师

Security checks for vulnerabilities and agentic risk

Overview

This skill is not malicious, but it should be reviewed because it asks for very personal birth/location details and face or palm photos without clear privacy controls.

Review before installing if users may provide exact birth time, birthplace, household details, or face/palm photos. Use only the minimum information needed, avoid photos unless necessary, treat outputs as entertainment or cultural reference rather than medical, legal, financial, or life-decision advice, and install optional Python dependencies in an isolated environment with pinned versions if used.

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
scripts/requirements.txt:4
Finding

Unpinned Third-Party Python Dependencies

Content
View full analysis
=1.2.0 lunar_python>=1.4.0 ``` The related installation instruction is also exposed through `scripts/bazi_chart.py:633`: ```python raise ValueError("Lunar calendar charting requires the lunar_python library. Install it first: pip install lunar_python") ``` ### Technical Analysis The dependency declarations use minimum-version constraints rather than exact, reviewed versions. Consequently, installation may resolve to any future version of `lunardate` or `lunar_python`. No integrity hashes or lock file constrain the downloaded artifacts. These packages are imported directly by the chart-generation scripts. Python executes package initialization code during import, so a compromised dependency release could run arbitrary code before the legitimate calculation logic begins. There is no evidence that the currently named packages or bundled project code are malicious. The issue is a supply-chain exposure caused by uncontrolled dependency selection and the absence of artifact integrity verification. ### Attack Path 1. An attacker compromises a dependency maintainer account, package publishing infrastructure, or a future permitted package release. 2. The attacker publishes a malicious version whose number satisfies `lunardate>=1.2.0` or `lunar_python>=1.4.0`. 3. A user follows the documented `pip install` instruction without using a trusted lock file or hashes. 4. The package manager selects and installs the compromised release. 5. A chart script imports the dependency. 6. Malicious package initialization code executes with the privileges of the user running the script. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the invoking user's account. The ...[truncated 392 chars]
Remediation
View remediation
lunar_python== ``` 2. Generate a reproducible lock file containing cryptographic hashes for every direct and transitive dependency, such as with `pip-compile --generate-hashes`. 3. Install with hash enforcement: ```bash pip install --require-hashes -r requirements.lock ``` 4. Use an authenticated, explicitly configured package index or an internally controlled dependency mirror. 5. Review package ownership, release history, source repository, and artifact provenance before approving upgrades. 6. Automate dependency vulnerability and integrity monitoring while keeping version changes subject to review. 7. Run these scripts in a least-privileged virtual environment or container without unnecessary secrets, sensitive mounts, or elevated host permissions. 8. Update the installation guidance in `scripts/bazi_chart.py` to direct users to the reviewed lock file rather than an unconstrained package installation command. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • 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 (34)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The description presents a comprehensive metaphysics/fortune-telling assistant spanning many systems and user intents. The supplied code, however, implements only almanac-related date calculations and simple auspicious-date filtering. While 黄历、择吉、运势相关中的一小部分 are covered, the primary implemented behavior is much narrower than the declared skill scope. There is no evidence of most advertised systems or report-generation/advisory features. This is a description-behavior mismatch due to substantial overclaiming of capabilities, even though there are no suspicious undeclared external-resource accesses or unrelated harmful behaviors.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

There is a clear description-behavior mismatch. The code only implements 八字四柱排盘-related calculations: calendrical conversion, pillar derivation, 纳音, 十神, 大运, some 神煞, and 五行 strength. That fits one subset of the declared domain (Bazi), but the declared purpose strongly represents a comprehensive multi-system divination skill with many additional reading and advisory functions. No evidence in this chunk supports Tarot, Western astrology, Ziwei Doushu, Qimen Dunjia, naming,择吉,合婚,穿搭配色, palm/face reading, or similar capabilities. There are no suspicious undeclared security-relevant actions; the mismatch is mainly overbreadth in the description versus the narrow implemented functionality.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The description significantly overstates the implemented functionality. The code only supports a specific I Ching divination workflow: coin, number, or time hexagram generation; determining moving lines and changed hexagrams; and returning simplified hexagram/judgment/image/yao text data. That is consistent with a Zhouyi/占卜 sub-skill, but not with the declared full-spectrum metaphysics consultant spanning numerous unrelated traditions and tasks. There is no evidence of undeclared sensitive behavior or resource access; the mismatch is primarily that the declared purpose is much broader than the actual code behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The description presents a comprehensive metaphysics consultant skill spanning numerous divination systems and end-user services. The actual code chunk is narrowly focused on 紫微斗数排盘: calendrical conversion, palace/star placement, sihua, wuxing ju, and daxian generation, with JSON output. This is not a security issue or hidden capability mismatch; rather, the declared purpose materially overstates the implemented functionality and primary scope. While Ziwei Doushu is one subset of the declared domain, the code does not substantiate the broader claims of all-system fortune-telling, interpretation, naming, date selection, tarot/astrology, or other listed capabilities. Therefore this is a description-behavior mismatch.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger description is extremely broad and includes many common topics, increasing the chance of accidental invocation on unrelated conversations. Mis-triggering can unnecessarily pull users into sensitive-data collection flows or inappropriate spiritual/health/financial guidance contexts, which raises privacy and safety risk even without malicious intent.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 50)May include surrounding context.

md
2. 运行排盘脚本:`scripts/ziwei_chart.py`,输出十二宫位、主星副星、四化、大限流年

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 56)May include surrounding context.

md
2. 运行排盘脚本:`scripts/ziwei_chart.py`,输出十二宫位、主星副星、四化、大限流年

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 266)May include surrounding context.

md
2. 运行排盘脚本:`scripts/ziwei_chart.py`,输出十二宫位、主星副星、四化、大限流年

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill instructs collection of highly sensitive personal data, including birth date/time/location and photos of faces or hands, but provides only minimal privacy language and no concrete consent, minimization, retention, or handling controls. In this context, the combination of biometric-like images and precise personal profile data creates meaningful privacy and profiling risk if mishandled or unnecessarily requested.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

L255 明确规定“使用中文”,但文档中没有说明这是用户可选项,也没有给出地区合规或场景限定的正当理由。根据语言/locale 政策,这属于在未征得用户同意的情况下强制限定输出语言。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

This markdown file presents all skill instructions and report templates exclusively in Chinese, which can amount to a language/locale policy constraint if users are not given a choice. The file does not indicate that Chinese output is optional, selectable, or justified as a region-specific tool.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file presents all user-facing content in a single language and does not indicate that the skill is Chinese-only by design or that users can select another language. Under the language/locale policy rule, forcing one language without opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module header and calculate_dayun docstring describe this component as calculating 大运, including 起运年龄 and 顺逆排. However, inside the function the loop that should generate the 8-step 大运 sequence only appends a placeholder and returns no actual 干支 sequence, while the real sequence is computed elsewhere by calculate_dayun_ganzhi. This is an active mismatch between the function's stated intent and what it actually does.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This Python file contains only Chinese-language user-facing documentation and examples, and the generated result strings are also hard-coded in Chinese. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation unless the tool clearly documents a justified region-specific constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The module docstring, CLI help text, and output-facing strings are all written in Chinese, and the skill provides no option for users to select another language or locale. Under the policy, a skill that effectively requires a specific language without opt-in is a natural-language policy violation unless the locale constraint is clearly justified.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

命令行接口在L504声明支持--calendar为solar或lunar,这会让调用者理解为脚本可按两种历法接受输入。但L507直接将参数传入calculate_ziwei后,函数在L371-L372无条件调用solar_to_lunar(year, month, day),没有任何calendar == 'lunar'处理逻辑,因此农历输入会被当作公历处理。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The HTML root declares lang="zh-CN", which fixes the skill output to Simplified Chinese/China locale. Under the policy, forcing a specific language or locale without user opt-in is a natural-language policy violation unless the constraint is explicitly justified, which is not present in this file.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The HTML root sets lang="zh-CN", indicating a fixed Simplified Chinese locale. Under the policy rules, forcing a specific language or locale without user opt-in is a natural-language policy violation unless the restriction is clearly justified, which this template does not state.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The entire skill reference is written in Chinese and does not indicate that users may choose another language or locale. Under the stated policy, a fixed language without user opt-in can be a natural-language policy violation unless the locale constraint is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file contains natural-language content exclusively in Chinese and does not mention that the user can choose another language or that the skill is intentionally limited to Chinese-speaking users. Under the policy, forcing a specific language without user opt-in can be a locale/language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file contains natural-language instructions exclusively in Chinese from title to closing guidance, and nowhere indicates that users may opt into another language or that the skill is intentionally limited to a Chinese-speaking audience. Under the language/locale policy rule, forcing a specific language without user choice is a policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

SQP-3 applies to all file types and covers language or locale policy violations. This reference file presents all instructional content in a single language with no opt-in, alternative language option, or justification that it is specifically intended for a Chinese-language audience.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The content consistently uses Chinese throughout the file, including headings and instructions, and does not indicate that users may choose another language. Under the policy criteria, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale constraint is explicitly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This file uses a single forced language throughout and does not provide any opt-in, alternative language, or statement that the skill is intentionally limited to Chinese-speaking users. Under the stated policy, forcing a specific language without user choice can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The entire reference file is written exclusively in Chinese and does not indicate that the user can choose another language or that the skill is intentionally limited to Chinese-speaking users. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.