Back to skill

Security audit

Catalyst Edge

Security checks for vulnerabilities and agentic risk

Overview

This skill is Review because it bundles real personal financial records and can post financial summaries to a fixed Discord channel without clear confirmation controls.

Install only after removing real personal and financial records from the package, rotating the exposed Alpha Vantage key, removing broad /workspace/memory access, and making Discord delivery opt-in with a visible payload preview and verified destination. Treat the current package as exposing sensitive household financial context to anyone who can read the skill files.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Warning
Location
stock_scanner/scanner.py:1
Finding

Hard-Coded Alpha Vantage API Credential Exposed in Source and Network Requests

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
CASH_FLOW_ANALYSIS.md:1
Finding

Plaintext Personal, Banking, Benefits, and Household Financial Data Included in the Skill Package

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:54
Finding

Quarterly Workflow Requests Overbroad Agent Memory Access Before External Financial Disclosure

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (9)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This section gives specific financial, tax, legal, and insurance recommendations tailored to an identifiable household situation without any disclaimer or encouragement to seek qualified professional advice. Users may treat the guidance as authoritative and act on mortgage prepayment, trust setup, investment allocation, benefits eligibility, or tax planning in ways that are unsuitable or harmful for their circumstances.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly instructs posting personal financial information such as net worth, savings changes, debt status, FIRE progress, and overdue action items to a Discord channel, but provides no privacy controls, audience restrictions, or minimization guidance. Even if the channel is intended to be private, Discord is an external service and this creates unnecessary exposure of sensitive financial data that could be disclosed to unintended recipients or retained outside the user's control.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

text

### Files
- `/workspace/skills/catalyst-edge/SKILL.md` (this)
- `/workspace/skills/catalyst-edge/FIRE_MODEL.md` — current numbers
- `/workspace/skills/catalyst-edge/PORTFOLIO_ANALYSIS.md` — portfolio details
- `/workspace/skills/catalyst-edge/HISTORICAL_PICKS.md` — past picks + performance

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · fire_pipeline.py (reported line 106)May include surrounding context.

python
return load_json(LAST_SCAN_F)
    else:
        print("[Pipeline] last_scan.json is stale — running scan_once.py ...")
        result = subprocess.run(
            [sys.executable, str(SCAN_DIR / "scan_once.py")],
            capture_output=True, text=True
        )

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · fire_pipeline.py (reported line 360)May include surrounding context.

python
"--target", DISCORD_CHANNEL_ID,
        "--file", tmp,
    ]
    result = subprocess.run(cmd, capture_output=True, text=True)
    return result

# ═══════════════════════════════════════════════════════════════════════════════

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The top-level docstring describes the skill as a stock scanner that pulls live RSI, price, and momentum for a watchlist, which suggests data retrieval and analysis behavior. However, the implementation also writes structured scan output to last_scan.json and appends historical entries to scan_log.md, adding persistent side effects not reflected in the documentation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The fetch helper performs outbound HTTP requests to Alpha Vantage, and the scan function sends user-selected tickers as query parameters. While network access is core to a stock scanner, there is no nearby user-facing disclosure or code comment warning that watchlist contents and request metadata are sent to a third-party service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The code saves detailed scan output to last_scan.json and appends summaries to scan_log.md, creating persistent local records of scan activity. There is no confirmation prompt, warning comment, or user-facing disclosure that this data will be stored on disk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

Multiple timestamps are formatted with a fixed 'CDT' suffix, which imposes a specific locale/timezone assumption on all users. This is a natural-language locale policy issue because the skill presents localized time information without opt-in or justification.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.