Back to skill

Security audit

命理占卜 · Chinese Fortune Telling

Security checks for vulnerabilities and agentic risk

Overview

The skill promises not to save sensitive birth details but then requires saving them in identifiable local reports.

Before supplying birth details, require archiving to be optional and explicitly approved, with a chosen storage location and deletion process. Setup downloads npm dependencies. Calculation defects also mean the readings should not guide consequential decisions.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

other

Warning
Location
SKILL.md
Finding

Mandatory archiving exceeds the disclosed data-retention consent

Content
View full analysis

Impact

Birth information remains in a local archive beyond the disclosed processing purpose. No external transmission or access by another party was established.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (13)

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The code is within the declared divination domain, but its central calculation materially differs from the promised classical-grounded engine. It selects a hexagram using only moving-line and yang-line counts; for example, six static yang lines yield 师 rather than 乾. It also hard-codes the day stem, assigns line branches sequentially, and defaults most self/responding relationships. Its element lookup does not recognize heavenly stems, so the day-stem argument silently defaults to earth. These are substantive departures in the core advertised calculation, not merely supporting implementation details. Other advertised engines cannot be assessed from this chunk, and their absence here is not treated as a mismatch.

Content

No source excerpt is available for this finding.

Dependency installation requires network access despite an explicit no-network permission boundary.

Medium
Category
Excessive Agency
Confidence
98% confidence
Finding

The instructions authorize npm installation at setup and on missing-module errors despite describing a no-network, bridge-only execution boundary. Installation can contact external registries and execute dependency lifecycle scripts, expanding execution beyond the stated local scripts; this does not establish that any dependency is malicious or that birth data is transmitted.

Content

No source excerpt is available for this finding.

Mandatory dossier creation contradicts the promise not to persist sensitive personal information.

Medium
Category
Excessive Agency
Confidence
99% confidence
Finding

Mandatory dossier creation directly contradicts the collection-time promise that sensitive birth information will not be persistently stored. The prescribed filename itself reveals birth date, birth-time category, and sex, while the dossier can retain additional personal information accessible through shared storage, backups, or synchronization.

Content

No source excerpt is available for this finding.

Mandatory archival persists sensitive birth information despite the privacy notice promising no persistent storage.

Medium
Category
Output Handling
Confidence
99% confidence
Finding

This is the same privacy vulnerability as SDI-4, not an additional independent exposure. Users consent to local calculation under an explicit no-persistence assurance, but the workflow subsequently mandates a durable archive containing sensitive birth information.

Content

No source excerpt is available for this finding.

Mandatory archiving retains sensitive birth information despite the collection-time promise of no persistent storage.

Medium
Category
Data Exfiltration
Confidence
99% confidence
Finding

This duplicates the mandatory-archiving issue identified by SDI-4 and SQP-2. Even without network transmission, unexpected retention can expose personal information to other local users, indexing services, synchronized folders, or backups.

Content

No source excerpt is available for this finding.

The claimed Liu Yao chart engine selects hexagrams using aggregate counts rather than the six ordered line values.

Medium
Category
Excessive Agency
Confidence
99% confidence
Finding

The engine selects a hexagram using only the number of moving lines and yang lines, discarding their positions; distinct six-line configurations therefore produce the same hexagram, and moving status incorrectly influences the primary hexagram. This undermines output integrity in a skill advertised as computing charts grounded in classical rules, potentially causing the agent to present incorrect readings as authoritative calculations. The explicit simplification comments suggest negligence rather than malicious intent; the impact is misinformation, not demonstrated code execution or data exposure.

Content

No source excerpt is available for this finding.

The code assigns 天英 to the central palace despite explicitly documenting that 天禽 must occupy it.

Medium
Category
Excessive Agency
Confidence
99% confidence
Finding

The comment states that 天禽 always occupies the central fifth palace, but the implementation assigns nineStars[4], which is 天英 (L016); 天禽 is nineStars[8] (L020). This directly contradicts the documented chart-construction rule and propagates into the reported palace placement and auspiciousness assessment.

Content

No source excerpt is available for this finding.

Classical Qi Men date-selection results are replaced by unexplained modular heuristics.

Medium
Category
Excessive Agency
Confidence
97% confidence
Finding

The manifest promises classical-source-grounded divination, but this implementation determines yin/yang dun using fixed calendar cutoffs and selects the ruling star and door by cycling elapsed hours modulo nine and eight from an arbitrary epoch. It does not compute the Qi Men chart configuration or xun needed to derive these values, yet presents them as actual 奇门遁甲 results (L459–L462) and uses them to rank recommended dates (L322–L335), without identifying them as approximations.

Content

No source excerpt is available for this finding.

BaZi strength and useful-god analysis uses the twelve Zi Wei palaces instead of the four birth pillars.

Medium
Category
Excessive Agency
Confidence
99% confidence
Finding

analyzePlate passes the twelve Zi Wei palaces to calculateStrengthEnhanced and calculateYongshenEnhanced, whose BaZi calculations count stems, branch roots, and hidden stems as though these were the four birth pillars. This produces systematically unreliable strength scores and useful-god recommendations presented as classical-source-grounded analysis, making it an output-integrity defect rather than a code-execution or data-exfiltration vulnerability. The skill's emphasis on authoritative chart interpretation increases the risk of misplaced trust, although its exclusion of medical, legal, and investment recommendations limits the intended impact.

Content

No source excerpt is available for this finding.

Overly Broad Trigger

Low
Category
Trigger Abuse
Confidence
70% confidence
Finding

Overly Broad Trigger: description clause 'Use whenever the user asks to 算命 / 算卦 / 批八字 / 看生辰八字 / 排盘 / 看命盘, asks about 大运 / 流年 (luck cycles) or about 运势 only in a chart context' activates on 'to', which is too short and may match unintended inputs

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · scripts/cantian/package.json (reported line 5)May include surrounding context.

json
"private": true,
  "type": "module",
  "dependencies": {
    "cantian-tymext": "^0.0.26"
  }
}

The report states that heavenly-stem combinations do not affect the score, but the scoring function explicitly includes them.

Low
Category
Excessive Agency
Confidence
99% confidence
Finding

The scoring disclosure at L388–L389 says that only day-master and year-branch relationships contribute and explicitly excludes heavenly-stem combinations (天干五合). However, calculateOverallScore adjusts the score by +10, −5, or −10 for those combinations at L307–L309, contradicting the report's stated scoring basis.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · scripts/engine/package.json (reported line 36)May include surrounding context.

json
"bazi": "node bazi-analysis.js"
  },
  "dependencies": {
    "iztro": "^2.5.8"
  }
}

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/run-cantian.cjs:122

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/run-engine.cjs:131

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
scripts/verify-pillars.cjs:111