Back to skill

Security audit

印度占星专业解盘系统

Security checks for vulnerabilities and agentic risk

Overview

This is mostly a real Jyotish astrology engine, but it includes under-disclosed persistent memory and auto-skill features plus risky setup steps that should be reviewed before use.

Install only after reviewing or disabling the Hermes memory/bridge components if you do not want conversation data or task history persisted across sessions. Avoid following any instructions that push directly to a repository main branch, and install dependencies in a controlled environment instead of allowing runtime pip installation. Treat generated memories and generated skills as untrusted user data unless manually reviewed.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (4)

T02 · Agent Memory Poisoning

Error
Location
scripts/hermes_memory_core.py:321
Finding

Untrusted conversation content can poison persistent agent memory

Content
View full analysis

Vulnerability Details

File Location: scripts/hermes_memory_core.py:321-347, scripts/hermes_memory_core.py:488-502, scripts/hermes_bridge.py:491-515, and scripts/hermes_bridge.py:547-563
Vulnerability Type: Persistent storage of untrusted conversation content without approval or trust separation
Risk Level: High

Vulnerable Code

python
def auto_extract_and_store(self, text: str, session_id: str,
                           source_type: str = 'conversation') -> List[int]:
    stored_ids = []
    extractions = self._extract_key_information(text)

    for extraction in extractions:
        importance = self._assess_importance(extraction)

        memory_id = self.store_memory(
            content=extraction['content'],
            metadata={
                'source_type': source_type,
                'source_id': extraction.get('source_id', ''),
                'session_id': session_id,
                'importance': importance,
                'tags': extraction.get('tags', []),
                'entities': extraction.get('entities', [])
            }
        )
        stored_ids.append(memory_id)

        if importance >= 8:
            self._send_reminder(
                f"⚠️ Detected high-importance information: "
                f"{extraction['content'][:50]}..."
            )

    return stored_ids
python
def _persist_to_markdown(self, content: str, metadata: Dict):
    memory_dir = os.path.expanduser("~/.workbuddy/memory/")
    os.makedirs(memory_dir, exist_ok=True)
    today = datetime.now().strftime('%Y-%m-%d')
    daily_file = os.path.join(memory_dir, f"{today}.md")

    entry = f"\n\n## [Hermes automatic record] {datetime.now().strftime('%H:%M')}\n\n"
    entry += f"- **Source**: {metadata.get('source_type', 'unknown')}\n"
    entry += f"- **Tags**: {', '.join(metadata.get('tags', []))}\n"
    entry += f"- **Content**: {content}\n"
    en
...[truncated 3990 chars]
Remediation
View remediation

Remediation Suggestions

  1. Disable automatic persistence by default and require explicit, informed user approval for each memory record.
  2. Store structured, narrowly scoped facts instead of raw conversation fragments.
  3. Reject or quarantine content containing commands, role changes, safety overrides, tool-use directives, credentials, or requests to influence future sessions.
  4. Mark recalled content as untrusted user data and never place it in a privileged instruction section.
  5. Separate memory by authenticated user, workspace, task, and sensitivity class.
  6. Add retention limits, expiration, review, correction, export, and deletion controls.
  7. Encrypt sensitive memory at rest and restrict filesystem permissions.
  8. Require confirmation before persisting birth data, profile details, file contents, or other personal information.
  9. Apply output encoding and strict length limits when constructing context summaries.
  10. Add tests proving that imperative text cannot be promoted into trusted future-session instructions.

T02 · Agent Memory Poisoning

Error
Location
scripts/hermes_bridge.py:31
Finding

Untrusted task data can be converted into persistent Skill instructions

Content
View full analysis

Vulnerability Details

File Location: scripts/hermes_bridge.py:31-95 and scripts/hermes_bridge.py:298-342
Vulnerability Type: Automatic generation and indexing of persistent Skills from untrusted task content
Risk Level: High

Vulnerable Code

python
def auto_create_skill_from_experience(
    self, experience: Dict
) -> Optional[Dict]:
    task = experience.get('task', '')
    steps = experience.get('steps', [])

    if not steps:
        return None

    skill_id = f"skill-{datetime.now().strftime('%Y%m%d%H%M%S')}"
    content = self._build_skill_content(
        skill_id,
        task,
        steps,
        experience.get('errors_made', []),
        experience.get('corrections_received', [])
    )

    skill_path = os.path.join(self.auto_dir, f"{skill_id}.md")
    with open(skill_path, 'w', encoding='utf-8') as f:
        f.write(content)

    self._update_index({
        'id': skill_id,
        'name': task[:50],
        'path': skill_path,
        'source': 'auto-generated',
        'created': datetime.now().isoformat(),
        'tags': self._extract_tags(task),
        'usage_count': 0
    })

    return {
        'id': skill_id,
        'path': skill_path,
        'name': task[:50]
    }
python
def _build_skill_content(self, skill_id, task, steps, errors, corrections):
    content = f"""---
id: {skill_id}
name: {task[:60]}
created: {datetime.now().isoformat()}
source: auto-generated (Hermes Learning Engine)
tags: [{', '.join(self._extract_tags(task))}]
---

# {task}

"""

    for i, step in enumerate(steps, 1):
        title = step.get('title', step) if isinstance(step, dict) else step
        content += f"### Step {i}: {title}\n\n"
        if isinstance(step, dict) and step.get('details'):
            content += f"{step['details']}\n\n"

    return content
python
def execute_skill(self, skill_id: str
...[truncated 2935 chars]
Remediation
View remediation

Remediation Suggestions

  1. Disable automatic Skill creation by default.
  2. Require explicit human review and approval before writing or indexing a generated Skill.
  3. Represent generated procedures with a constrained schema rather than free-form Markdown instructions.
  4. Reject role changes, safety overrides, shell commands, credential requests, network destinations, and other high-risk directives.
  5. Record the authenticated author, source session, provenance, and approval status of every generated Skill.
  6. Keep generated content in a quarantine directory until it passes safety scanning and review.
  7. Never execute or load generated Skill content with higher trust than the originating user message.
  8. Use collision-resistant identifiers that include randomness rather than second-resolution timestamps alone.
  9. Restrict generated Skills to the originating user and workspace.
  10. Provide revocation and cleanup mechanisms for generated files and index entries.

T08 · Insecure Dependencies

Warning
Location
scripts/report_builder.py:29
Finding

Report generation silently installs an unpinned package at runtime

Content
View full analysis

Vulnerability Details

File Location: scripts/report_builder.py:29-35; related dependency declarations appear in requirements.txt:1-9 and skills/jyotish-engine-modules/SKILL.md:178-183
Vulnerability Type: Uncontrolled runtime dependency retrieval and installation
Risk Level: Medium

Vulnerable Code

python
import os
import sys
import re
import glob
import argparse

try:
    import markdown
except ImportError:
    print("Installing markdown...")
    os.system(f"{sys.executable} -m pip install markdown -q")
    import markdown

The root dependency file does not pin package versions:

text
pyswisseph

A subordinate Skill also documents unpinned and inconsistent package installation:

bash
pip install swisseph numpy

Technical Analysis

Importing the report builder can trigger a shell command that installs the latest package named markdown from the active pip index. This installation occurs during normal runtime rather than during a deliberate, reviewed setup phase.

No exact version, hash, signature, approved index, or lock file is enforced. Consequently, the effective code imported after installation can change without any change to the audited project. The project also uses inconsistent Swiss Ephemeris package names: the root requirement specifies pyswisseph, while subordinate documentation specifies swisseph.

The command does not contain direct user-controlled arguments, so conventional argument injection was not confirmed. The primary vulnerability is unreviewed supply-chain retrieval and execution with the privileges of the Python process.

Attack Path

  1. The markdown module is absent from the environment.
  2. A user or agent invokes or imports scripts/report_builder.py.
  3. The ImportError handler calls pip automatically.
  4. Pip resolves markdown using the environment's configured package index and selects an uncontrolled vers ...[truncated 963 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove all runtime package installation from application code.
  2. Declare markdown as an explicit installation dependency.
  3. Pin exact versions in a lock file and require package hashes.
  4. Install dependencies only during a documented setup phase.
  5. Use an approved package index and disable unexpected fallback indexes.
  6. Run installation in an isolated virtual environment with minimal permissions.
  7. Standardize on the verified package name pyswisseph throughout the project.
  8. Check the pip subprocess return code and fail safely instead of importing after an unchecked shell command.
  9. Prefer subprocess.run() with an argument array if an installer must be invoked by a separate setup utility.
  10. Add dependency vulnerability and provenance scanning to release checks.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
skills/jyotish-engine-modules/SKILL.md:39
Finding

Installation workflow instructs direct publication to the repository main branch

Content
View full analysis

Vulnerability Details

File Location: skills/jyotish-engine-modules/SKILL.md:39-56; a similar instruction appears in skills/jyotish-full-reading-integration/SKILL.md:324
Vulnerability Type: Use of ambient repository credentials for an unnecessary privileged publication action
Risk Level: Medium

Vulnerable Instructions

bash
cd ~/Projects
git clone https://github.com/732642856/yinduzhanxing.git
cd yinduzhanxing

cp ~/Projects/yinduzhanxing-local/scripts/*.py ./scripts/

git add scripts/
git commit -m "feat: add five core chart-engine modules"
git push origin main

Technical Analysis

Local use of the astrology modules requires copying or importing files, but it does not require publishing changes to a remote repository. The installation workflow nevertheless directs the operator or agent to commit changes and push them directly to main.

The command relies on ambient Git credentials and repository permissions. It does not require a review branch, pull request, displayed diff, test gate, confirmation step, or verification that the remote belongs to the current user.

The repository clone itself does not read SSH keys. The risk arises when Git uses credentials already available in the environment to perform the push. The instruction is documentation rather than automatically executed code, so exploitation requires an agent or user to follow it.

Attack Path

  1. The Skill is used in an environment with cached GitHub credentials or an authenticated credential helper.
  2. The user or agent follows the documented integration workflow.
  3. Files are copied into a credentialed repository without a mandatory review step.
  4. git add stages all changes under scripts/, including any unintended local modifications.
  5. A commit is created.
  6. git push origin main uses ambient credentials to publish the changes directly to the main branch.
  7. If the copied files were modified, poisoned ...[truncated 764 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove repository publication from the local installation workflow.
  2. End the default procedure after local copying, dependency installation, and testing.
  3. If publication is explicitly requested, create a dedicated branch rather than pushing to main.
  4. Display and review git status and git diff --staged before committing.
  5. Run the complete test suite before any publication step.
  6. Require explicit user confirmation immediately before committing and pushing.
  7. Use a pull request with mandatory review and protected-branch checks.
  8. Verify the remote URL and authenticated account before publication.
  9. Stage an explicit file allowlist rather than an entire directory.
  10. Document that Git credentials must be least-privileged and scoped to the intended repository.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (333)

Harmful Content Injection

Critical
Category
Prompt Injection
Confidence
70% confidence
Finding

This content may contain harmful instructions that could cause physical harm if followed. CRITICAL: Review carefully before use.

Content

Scanner excerpt · references/verified-celebrity-cases.md (reported line 360)May include surrounding context.

md
### 可验证的关键事件

| 事件 | 时间 | 验证状态 |
|------|------|---------|
| 发现钋(Polonium)和镭(Radium) | 1898 | ✅ 12宫深度研究+火星入庙的科学突破 |
| 获得诺贝尔物理学奖(与丈夫共享) | 1903 | ✅ 首位女性获奖者 |
| 丈夫Pierre Curie因车祸去世 | 1906 | ⚠️ 7宫/婚姻丧失 |
| 获得诺贝尔化学奖(独自) | 1911 | ✅ 唯一两次获得诺贝尔奖的人 |
| 因长期辐射暴露去世 | 1934 | ⚠️ 6宫/8宫健康相关 |

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

声明描述的是一个覆盖面很广的印度占星专业系统,核心能力包括PDF输入、综合解盘和推运输出;而实际代码只是 scripts/argala.py 中的一个独立分析函数,用于计算行星之间的Argala与Virodha关系及简单净评估。虽然“Argala”确实在声明触发词中出现,且属于印度占星相关内容,但该代码片段的实际用途仅是整体系统中的一个子组件,远不足以支撑声明中的核心能力与广泛功能。因此,描述与该代码片段实际行为存在明显不匹配,主要表现为声明严重夸大了已实现能力。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description presents a broad end-to-end Jyotish analysis system centered on PDF chart ingestion and comprehensive interpretive/predictive outputs. The supplied code chunk does not implement those broad capabilities. It is narrowly focused on one technical subcomponent: Ashtakavarga calculation using predefined BPHS contribution tables, plus derived scoring summaries and validation. While Ashtakavarga is relevant to Vedic astrology and therefore related to the domain, the actual code lacks any PDF parsing, chart interpretation narrative, dasha/transit timing logic, rectification, divisional chart handling, compatibility analysis, or report generation. This is a material scope mismatch: the code is only a computational astrology submodule, not the described full professional reading and prediction system.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

声明描述的是一个功能非常全面的印度占星分析平台,但提供的代码片段只是其中一个底层子模块,专注于Drishti相位计算。代码行为与“吠陀占星”领域相关,因此并非完全无关;但就声明的核心能力而言,实际代码远未体现PDF输入、系统性解盘、推运应期等主要目的,存在明显的描述与实际行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

描述宣称的是一个覆盖输入、解盘、推运、报告输出的完整Jyotish系统,范围很广;但实际代码只是单一的Avastha状态计算器,属于印度占星中的一个细分分析组件。虽然主题领域一致,代码内容与“深度解盘+PDF输入+推运系统”的核心承诺存在明显落差。不存在明显越权或额外危险能力,但其主要用途比声明窄得多,且未实现声明中的关键核心能力,因此应判定为描述与实际行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

该代码与宣称描述存在明显能力范围不符。描述将技能包装为全面的印度占星专业解盘与推运系统,核心还包括PDF输入和复杂分析模块;但实际代码只是一个单文件CLI工具,功能聚焦于根据Nakshatra或月亮黄经计算Vimshottari大运与小运时间线,并显示当前所处大运/小运。虽然“Dasha/推运”这一子能力与描述部分一致,但整体主用途被大幅夸大,许多关键宣称能力完全未见实现,因此应判定为描述与行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The description presents a broad, professional-grade Jyotish analysis platform centered on PDF chart ingestion, deep interpretation, predictive timing, and many specialized subdomains. The supplied code chunk implements only a narrow supporting function: Vimshottari Dasha period calculation based on Nakshatra number and age. While Dasha is one declared concept and the script is thematically related to Jyotish, the actual behavior falls far short of the declared primary purpose and omits the headline capability of PDF chart input as well as nearly all listed advanced features. This is a material description-behavior mismatch, with the code representing just one small calculator component rather than the claimed end-to-end astrology system.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The description presents a broad, professional-grade Vedic astrology system with PDF chart ingestion and comprehensive analysis/forecasting capabilities. The code chunk is much narrower: it implements enhanced Vimshottari dasha calculations based on Moon longitude, nested dasha subdivision logic, simple transit effect mappings, and canned event prediction/report printing. This is related to the declared domain, so it is not unrelated code, but it materially underdelivers on the stated primary workflow and major capabilities—especially the headline PDF chart input and comprehensive chart interpretation. Therefore the description does not accurately represent what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The supplied code is narrowly scoped to mathematical computation of divisional chart positions and house placements across multiple Vargas, with an ASCII visualization helper. This aligns only with a small subset of the declared description related to Varga/divisional chart calculation. The declared purpose emphasizes an end-to-end professional Jyotish reading system centered on PDF chart ingestion, interpretation, forecasting, and many advanced astrological subsystems, none of which are implemented in this chunk. There is no file/PDF handling, no NLP/report-generation logic beyond simple formatted printing, no Dasha/Transit engine, and no support for many listed trigger topics. Therefore the description materially overstates and misrepresents the actual behavior of this code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

虽然代码确实属于印度占星/吠陀占星领域,并且包含Dasha、Transit、Vivah Saham、Ashtakavarga、Chara Dasha等内容,与声明主题部分一致,但其实际范围明显窄于声明。该代码块的核心是“事件预测模型”,不是一个完整的“PDF星盘输入→解盘→推运系统”。声明中列出的多项核心和触发能力在代码中完全未体现,尤其是PDF读取、综合解盘、分盘分析、出生时间矫正、合盘、KP/Shadbala、HTML报告等。因此存在明显的描述与实际行为不一致,属于能力被显著夸大和主用途偏移的情况。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

声明描述的是一个领域型占星分析技能,核心能力应包括PDF星盘读取、Jyotish解盘、Dasha/Transit等推运分析和专业报告生成。但提供的代码并未实现任何占星规则、星盘计算、PDF读取解析、推运算法、婚配/分盘分析或HTML占星报告生成。相反,它实现的是通用代理基础设施:技能管理、经验驱动的技能自动生成、记忆存储、用户建模、会话桥接和学习闭环。虽然测试示例使用了“印度占星”“PDF资料”等任务文本,并且标签提取中识别了“印度占星”,这只是示例数据和分类标签,不等于具备实际占星能力。因此代码的主要目的与声明严重不符,且包含多项未声明的通用记忆/学习/持久化能力。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

该代码的主要目的与声明严重不符。声明描述的是一个面向印度占星的专业分析系统,核心工作应包括读取PDF星盘、解析星盘数据、执行Jyotish规则推断、输出推运应期和相关占星报告。但实际代码是HermesMemoryCore,一个通用记忆与检索模块:创建本地目录和SQLite数据库,建立FTS5全文检索表、实体表、用户画像表、会话摘要表;支持存储记忆、搜索、自动从文本中提取关键信息、写入Markdown长期记忆、生成提醒、获取会话上下文等。虽然测试样例中塞入了“印度占星星盘PDF资料”等内容,但那只是作为普通文本被存储和搜索,并没有任何PDF读取、星盘解析、占星规则计算、婚配/推运/分盘分析等实现。因此这是明显的描述-行为不一致。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

主体功能上,代码与声明高度一致:它确实是一个印度占星统一引擎,支持星盘、Dasha、Transit、Nakshatra、Yoga、Varga、Jaimini、Argala、年运、合盘、报告生成等,和描述大体匹配。 但存在若干未声明且与核心“解盘/推运系统”不直接相关的能力:1) cmd_memory 实现了 Hermes 记忆系统,可写入、搜索、提取上下文,属于持久化记忆能力;2) cmd_celebrity 与 cmd_db_stats 会访问本地 SQLite/CSV 数据库,进行名人案例查询、统计和技术数据读取;3) 代码显式依赖并访问用户主目录下 ~/WorkBuddy/Claw 的数据库与CSV资源。这些能力和资源访问没有在技能描述或权限中体现,属于未声明能力/资源访问。另一个轻微不一致是声明突出“PDF星盘输入/读取PDF”,而所给代码片段本身主要是CLI计算引擎,没有看到PDF解析实现。不过相比之下,更明显的问题是额外的记忆与数据库功能未声明。因此应判定为描述与实际行为存在不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The code substantially matches the general domain: it is clearly a Vedic/Jyotish astrology engine with deep support for chart calculation, dasha, transits, varga charts, Jaimini, Prashna, synastry, Shadbala, Ashtakavarga, and HTML report generation. Those align well with much of the declared description. However, the declared purpose strongly centers on PDF chart input as a core workflow ('PDF星盘输入→严谨解盘→精确推运应期输出', plus triggers like 读取PDF/分析PDF星盘), and this code chunk does not show any PDF ingestion or parsing at all; instead it operates as a CLI receiving explicit birth data or direct numeric inputs. Additionally, the CLI exposes a Hermes memory system, which is not declared and is unrelated to astrology analysis. Because the missing PDF capability is presented as core in the description, and there is at least one unrelated undeclared capability, this is a material description-behavior mismatch rather than a minor omission.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a broad end-to-end Jyotish analysis and prediction system centered on PDF chart ingestion and comprehensive interpretive outputs. The supplied code only implements a narrow computational subroutine: calculating Jaimini Chara Karakas from planetary positions. While Jaimini/Karaka calculation is related to Jyotish, it is only one small component and does not substantiate the advertised primary purpose or most listed capabilities. There is no PDF handling, no chart parsing, no interpretive engine, no forecasting logic, and no report-generation beyond simple text/JSON formatting. Therefore the description materially overstates and misrepresents what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

声明描述的是一个范围很大的端到端印度占星解盘与推运系统,而实际代码只是其中一个子模块,专注于星宿相关计算。虽然代码确实涉及Jyotish领域内容,并包含声明中提到的部分关键词能力(如Nakshatra、KP Sub-Lord、Vimshottari起点、有限兼容性分析),但它并不实现描述中的核心能力,尤其缺少PDF输入、完整星盘解读、应期推运输出及多数列举功能。因此描述对该代码块的实际行为有明显夸大和不准确之处,属于描述与行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

描述把该技能表述为完整的印度占星专业解盘与推运平台,且将PDF星盘读取和推运应期作为核心能力。但给出的代码块仅实现了一个 Prashna 模块:通过 Swiss Ephemeris 计算问事盘、若干特定技术指标和失物查询,并提供 CLI 子命令。虽然“Prashna”确实属于声明中的一个子领域,因此不算完全无关,但它只覆盖了声明中很小的一部分。尤其是描述中最核心的 PDF 输入、综合解盘、推运/过境/应期输出等并未出现,因此存在明显的描述与行为不符。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents the skill as a full Jyotish analysis engine with PDF chart ingestion and substantive astrological reasoning capabilities. The supplied code does not perform chart parsing, PDF extraction, astrology calculations, or interpretive logic. Instead, it is a presentation-layer tool: it reads already-generated Markdown section files from disk, assembles them in a fixed order, converts them to HTML, applies styling, and saves a report file. While the script is thematically related to Jyotish reporting, its actual role is report formatting/rendering, not professional chart analysis or forecasting. This is a material description-behavior mismatch.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description presents a broad end-to-end Jyotish analysis platform with PDF ingestion and extensive interpretive/predictive capabilities. The supplied code chunk instead implements only a specific computational component: calculation of special lagnas from provided planetary degrees and timestamps. While this is related to Indian astrology, it is only a small sub-feature and lacks the core advertised behaviors such as PDF input, full chart reading, dasha/transit timing, rectification, compatibility analysis, or HTML report generation. Therefore the description materially overstates and misrepresents what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

描述与代码存在实质性不匹配。代码确实属于印度占星范畴,并且涉及声明中的部分关键词,如合盘、婚姻匹配、Dasha、Nakshatra;但其范围明显更窄,核心功能是婚配兼容性评分与相关附加检查。声明将技能描述为一个可读取PDF星盘并进行全面解盘、推运和多体系分析的完整系统,而当前代码既没有文件/PDF输入处理,也没有完整本命盘解读、过境推运、应期计算、分盘分析或其他列出的高级模块。因此这不是轻微的“功能未完全展示”,而是代码主功能与声明核心能力之间存在明显落差,应判定为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

该描述显著夸大了技能范围。代码确实属于印度占星领域,并且与年运/Tajika相关,因此并非完全无关;但其实际行为只是一个有限、简化的年运盘计算模块,而不是描述中的完整专业解盘与PDF输入分析系统。尤其是声明中的核心能力“PDF星盘输入→严谨解盘→精确推运应期输出”在此代码中均未得到实现,且代码还明确说明完整Varshaphala需要额外星历库支持,表明当前实现并不具备所宣称的精确性。因此应判定为描述与代码行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

声明描述的是面向终端用户的完整印度占星解盘与推运系统,而代码片段仅是一个底层验证脚本。其职责是对输入的chart_data和ashtakavarga_data做规则校验,确保若干天文/占星数据满足预设约束。虽然这些校验与Jyotish领域相关,属于支持性组件,但它们不足以支撑所宣称的核心能力。尤其是代码没有任何PDF处理、自然语言解盘、推运应期计算、报告生成、合盘匹配等实现,且主目的明显偏向审计/校验而非解盘系统本身。因此描述与实际代码行为存在实质性不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding

声明描述的是一个功能非常全面的印度占星解盘与推运系统,但提供的代码片段只是其中一个较底层的技术子模块,即Shodasavarga分盘计算。它的主要行为是计算各类分盘映射、行星所在分盘星座、尊贵状态,并附带少量针对D9和D60的辅助判断。虽然这与“Varga分盘”这一声明中的子能力一致,但远不足以支撑声明中强调的核心能力——PDF输入、严谨解盘、精确推运应期输出等。因此该代码与整体声明存在明显的描述—行为不匹配;属于声明范围远大于代码实际实现。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

声明描述的是一个范围很广的端到端印度占星解盘与推运系统,但该代码块的实际功能非常狭窄,仅是Avastha相关的状态计算模块。它不处理文件,不读取PDF,不解析整张星盘,也不执行任何推运、应期、Dasha或Transit计算。虽然Avastha属于印度占星领域,和总体主题相关,但从能力覆盖和主用途看,与声明中的核心能力存在明显落差,因此应判定为描述与代码行为不一致。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The code is clearly within the Jyotish domain, so it is not unrelated; however, the declared description substantially overstates the implemented functionality. This module only calculates divisional-chart placements and house distributions using various varga algorithms and provides ASCII visualization. There is no PDF parsing, no end-to-end chart ingestion pipeline, no interpretive engine, no forecasting logic (Dasha/Transit timing), no rectification, no advanced auxiliary systems listed in the description, and no HTML reporting. Therefore the description does not accurately represent what this specific supplied code chunk actually does.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/jyotish_engine.py:3426