Back to skill

Security audit

MLB Live Trader

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed MLB prediction-market trading tool: paper mode is default, while live real-money trading requires explicit setup and the --live flag.

Install only if you are comfortable giving the skill a Simmer API key and letting it read portfolio/position data. Keep it in paper mode until validated, store secrets outside config files, and use --live only with limits you are prepared to lose and with shared SIMMER_MLB_STATE_PATH when multiple hosts use one account.

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
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill description understates behavior by omitting environment-variable usage, account/position inspection, and other trading-related operations. In a security-sensitive setting, undisclosed access to API-backed portfolio data and venue configuration can expose financial information and lead users to invoke a skill with greater privileges and side effects than expected.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The skill description understates behavior by omitting environment-variable usage, account/position inspection, and other trading-related operations. In a security-sensitive setting, undisclosed access to API-backed portfolio data and venue configuration can expose financial information and lead users to invoke a skill with greater privileges and side effects than expected.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises significant capabilities—environment access, filesystem reads/writes, network access, and shell execution—without declaring an explicit tool scope or permissions boundary. That makes the effective privilege set opaque to users and reviewers, increasing the risk of overbroad execution and unintended access to secrets or local state.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

export TRADING_VENUE=polymarket

text

Keep credentials in an environment-managed secret. Do not write API or wallet keys to `config.json`, source files, shell history, issue reports, or logs.

## Paper mode

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest explicitly enables live market access via a required API key and describes paper and live trading, but it does not present any explicit warning, confirmation, or guardrail about real-money execution or external market impact. In the context of an automated MLB live trader, this omission materially increases the risk that a user deploys or authorizes a skill capable of placing real trades without fully understanding the financial consequences.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This skill can place real prediction-market trades when --live is supplied, but the execution path does not present a just-in-time confirmation or prominent warning immediately before order submission. In a trading skill, that increases the chance of unintended real-money execution from operator error, automation misconfiguration, or accidental flag usage, causing direct financial loss.

Content

No source excerpt is available for this finding.

Dynamic attribute access via getattr()

Low
Category
Dangerous Code Execution
Confidence
50% confidence
Finding

Dynamic getattr() with a non-literal attribute name can access arbitrary object attributes, potentially bypassing access controls.

Content

Scanner excerpt · mlb_live_trader.py (reported line 756)May include surrounding context.

python
if isinstance(market, Mapping):
            return dict(market)
        return {
            field: getattr(market, field)
            for field in cls._FIELDS
            if hasattr(market, field)
        }

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This code performs persistent filesystem writes, replacements, and deletions of temporary state files in save, and also archives legacy state via file replacement elsewhere, but it provides no print/log message, prompt, or other user-visible disclosure at the point of action. The docstrings describe the behavior for developers, but there is no runtime warning to users when durable state is created, overwritten, or migrated.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.