Back to skill

Security audit

Einstein Research — Market Bubble Risk Detector

Security checks for vulnerabilities and agentic risk

Overview

This market-risk skill is not malicious, but it needs review because it gives concrete investment and trading guidance while overstating its automation and data validation.

Install only if you are comfortable treating this as an educational market-risk framework, not personalized financial advice. Verify all market data independently, avoid acting automatically on its portfolio or short-selling suggestions, and prefer a pinned dependency file or isolated virtual environment before running any install commands.

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
README.md:21
Finding

Unpinned Third-Party Dependencies Create a Supply-Chain Risk

Content
View full analysis

Vulnerability Details

File Location: README.md, lines 21–23
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Complete Code Snippet:

bash
# Install dependencies
pip install yfinance requests pandas

Technical Analysis

The documented installation command retrieves the latest available versions of three third-party packages without version constraints, cryptographic hashes, a lockfile, or an explicitly trusted package index. Python package installation may execute package-controlled build or installation logic with the privileges of the user running pip.

The package names shown are conventional and no malicious package or unsafe package repository was identified. The vulnerability is that dependency resolution is mutable: future users may install releases different from those reviewed or tested by the project. A compromised package release, dependency account, or transitive dependency could therefore introduce arbitrary code during installation or runtime.

The project also provides no reproducible dependency manifest against which users can verify package integrity.

Attack Path

  1. An attacker compromises a named dependency, one of its transitive dependencies, or the corresponding package-publishing account.
  2. The attacker publishes a malicious release to the package index used by pip.
  3. A user follows the README and runs pip install yfinance requests pandas.
  4. Because no versions or hashes are constrained, pip resolves and downloads the attacker-controlled release.
  5. Malicious build, installation, import-time, or runtime code executes in the user's environment.
  6. The payload gains the same operating-system privileges and resource access as the user who installed or invoked the package.

Impact Assessment

Successful exploitation could execute arbitrary code with the invoking user's privileges. Depending on that user's permissions and environment, t ...[truncated 483 chars]

Remediation
View remediation

Remediation Suggestions

  1. Create a reviewed dependency manifest with exact versions, including transitive dependencies.

  2. Generate and verify cryptographic hashes for every distribution.

  3. Install dependencies with hash enforcement, for example:

    bash
    python3 -m venv .venv
    . .venv/bin/activate
    python3 -m pip install --require-hashes -r requirements.txt
    
  4. Use a lockfile-producing dependency-management tool and commit the resulting lockfile.

  5. Configure an explicit trusted package index or an internally controlled package mirror.

  6. Regularly scan dependencies for known vulnerabilities and review updates before changing pinned versions.

  7. Instruct users not to install dependencies with administrator or root privileges.

  8. Remove unnecessary dependencies from the setup documentation. The audited scripts/bubble_scorer.py uses only Python standard-library modules, so the documented third-party packages should not be required unless the missing data-retrieval implementation is added.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • 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
Findings (14)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/bubble_scorer.py (reported line 199)May include surrounding context.

python
- 1点: セクター全体に波及、mid-capまで上昇
- 2点: 低質・low-cap銘柄まで全面高、「ゾンビ企業」も上昇(最後の買い手参入)
"""
        return guidelines

    def format_output(self, result: dict) -> str:
        """結果を読みやすくフォーマット"""

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly presents investment recommendations such as trimming positions and maintaining holdings, but it does not prominently warn users that the tool is not financial advice and may be incomplete, delayed, or unsuitable for their circumstances. In a finance-oriented skill, actionable guidance can materially influence user behavior, increasing the risk of financial harm, misuse, and trust in an automated output beyond its intended scope.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The implicit triggers are broad enough that normal user anxiety about valuations or de-risking could activate this skill without a clear request for this specific analysis. That can cause unintended routing into investment-oriented guidance and execution of the referenced workflow, increasing the chance of inappropriate advice or unnecessary tool use in contexts where the user did not explicitly ask for bubble analysis.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill states that the process outputs JSON and Markdown report files, but it does not warn the user beforehand that files will be written. Undisclosed file creation can surprise users, overwrite existing artifacts, or leave sensitive analysis traces on disk, especially in shared or automated environments.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This section gives concrete profit-taking, trailing-stop, and short-selling instructions that a user could treat as investment advice, but it does not include any warning about financial risk, suitability, or the possibility of substantial losses. In a skill explicitly designed to support investment decisions, the omission makes unsafe or inappropriate reliance more likely, especially for inexperienced users who may over-trust the framework's quantitative framing.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file gives concrete trading actions such as stopping entries, immediate profit-taking, and recommending shorts, but does not pair those instructions with an explicit risk warning, suitability disclaimer, or reminder that losses can be substantial. In an investment-related skill, concise operational guidance can be acted on quickly and out of context, increasing the chance that users treat it as prescriptive financial advice rather than educational material.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The document gives concrete trading and short-selling instructions such as when to enter, exit, and short, but does not include any financial-risk warning, suitability disclaimer, or statement that the material is educational rather than personalized advice. In a skill explicitly framed to support practical investment decisions, users may over-rely on these prescriptive rules and take leveraged or short positions without appreciating material loss risk.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest describes an objective, data-driven market bubble risk evaluator using a revised Minsky/Kindleberger framework. In practice, this file merely prompts a human for 0-2 scores or accepts a JSON blob of already prepared scores, then sums them into a classification; it does not retrieve, compute, or validate any underlying market metrics.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

At L110 the guide states the qualitative adjustment has an upper limit of +3 points, with three categories worth 0-1 point each. Later self-check instructions at L315-L320 instead tell the evaluator to verify the adjustment stays within a +5 point limit, which actively conflicts with the scoring rules and could change the reported outcome.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

This markdown file contains natural-language content that switches into Japan-specific phrasing and examples such as 'Takaichi Trade' and yen-denominated scenarios, but it does not state whether users may choose their preferred language or locale. Under the policy-violation category, forcing or assuming a specific language/locale without opt-in can be a concern when not clearly justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The API examples encourage use of third-party services such as Google Trends and yfinance without warning that search terms, identifiers, IP addresses, or usage metadata may be sent to external providers. While not directly exfiltrating sensitive data in the snippet, this omission can create privacy and compliance risk if users automate lookups with proprietary watchlists, research themes, or corporate environments.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This code file contains natural-language documentation and user-facing output entirely in Japanese, including the module docstring and usage instructions. Under the language/locale policy, forcing a specific language without user choice can be a policy violation when no opt-in or alternative locale is offered.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
99% confidence
Finding

The top-level docstring tells users to run the script with '--ticker SPY --period 1y', implying automated analysis over a symbol and time period. The real argument parser only supports '--manual', '--scores', and '--output', so the documentation actively misstates the implemented behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manual assessment flow and CLI error/output messages are presented only in Japanese, which constrains user interaction to a single language. Because the script does not provide any explicit locale selection or opt-in, this conflicts with the policy guidance on language choice.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.