Back to skill

Security audit

mintyouragent

Security checks for vulnerabilities and agentic risk

Overview

This Solana wallet skill largely matches its stated purpose, but it handles real-money transactions and wallet/profile data with enough under-scoped security controls that users should review it carefully before installing.

Install only with a dedicated low-balance wallet, test on devnet first, avoid `--yes`, headless, AI, custom endpoints, and SSL-disable settings for value-bearing actions, and treat `wallet.json`, `RECOVERY_KEY.txt`, backups, and console/JSON key output as full wallet-control secrets. Do not link soul/profile data unless you are comfortable associating the derived agent identity summary with the wallet and MintYourAgent service.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (5)

T09 · Insecure Skill Coding Practices

Error
Location
mya.py:1442
Finding

Server-Controlled Financial Transactions Are Signed Without Semantic Validation

Content
View full analysis
bool: try: tx = SoldersTransaction.from_bytes(tx_bytes) message = tx.message if not message.recent_blockhash or message.recent_blockhash == Hash.default(): Output.error("Transaction missing blockhash") return False if not any(str(acc) == expected_signer for acc in message.account_keys): Output.error("Transaction missing signer") return False return True except Exception as e: Output.error("Transaction verification failed") log_error(f"TX verify: {e}") return False ``` The launch workflow signs the remotely returned transaction after applying only the weak check above: ```python tx_bytes = base64.b64decode(prepare_result.data["transaction"]) mint_address = prepare_result.data["mintAddress"] if not verify_transaction(tx_bytes, creator_address): Output.error("Transaction verification failed") sys.exit(ExitCode.SECURITY_ERROR) tx = SoldersTransaction.from_bytes(tx_bytes) tx.sign([keypair], tx.message.recent_blockhash) signed_tx_b64 = base64.b64encode(bytes(tx)).decode() ``` Poker escrow workflows do not perform even this limited validation: ```python if escrow and escrow.get('unsignedTx'): print("Signing escrow deposit transaction...") try: tx_bytes = base64.b64decode(escrow['unsignedTx']) tx = SoldersTransaction.from_bytes(tx_bytes) signed_tx = wallet.sign_transaction(tx) signed_b64 = base64.b64encode(bytes(signed_tx)).decode('utf-8') with Spinner("Confirming on-chain deposit..."): ...[truncated 3224 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
mya.py:2790
Finding

Agent Memory and User Context Files Are Read Beyond the Declared SOUL.md Scope

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
mya.py:1218
Finding

Wallet Private Key Is Duplicated in Plaintext Files

Content
View full analysis
Remediation
View remediation

other

Note
Location
mya.py:2424
Finding

Token Metadata Is Silently Modified to Add Platform Advertising

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
requirements.txt:5
Finding

Security-Critical Dependencies Are Installed Without Reproducible Version Pins

Content
View full analysis
=0.20.0 requests>=2.28.0 ``` The installation instructions bypass even these lower bounds: ```bash pip install solders requests ``` ### Technical Analysis The dependencies use open-ended lower bounds, and the primary installation instructions request the latest available releases. This does not provide a reproducible dependency set and allows future releases to enter the wallet-handling environment without project-specific review. No dependency confusion or typosquatting was identified: the package names are consistent across the project. The risk arises from unrestricted future versions, supply-chain compromise, and incompatible behavioral changes in packages responsible for transaction parsing, signing, and network communication. ### Attack Path 1. A dependency account, release pipeline, or package-distribution channel is compromised, or a future release introduces a security regression. 2. A user follows the documented installation command. 3. Package resolution selects the affected release because no exact version or hash is required. 4. Package installation or runtime code executes in the same environment as `mya.py`. 5. The compromised component can access wallet data, alter transaction handling, or intercept network requests. ### Impact Assessment A compromised dependency executes with the privileges of the user running the CLI. It may read plaintext wallet files, observe private keys in process memory, alter signed transactions, or access other same-user files. Because the application handles real-money wallet credentials and transactions, a dependency compromise can result in wallet theft even though this finding is primarily a supply-chain hardening deficiency. ]]>
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Rogue AgentSelf-Modification, Session Persistence
Findings (54)

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The statement that listed data is 'LOCAL only - never transmitted' is contradicted by the skill's own documented networked features, including token launches, linking profiles, transfers, poker escrow interactions, and signed/API requests. Misrepresenting transmission boundaries is dangerous because users may store wallet material, audit data, or profile content under the false belief that none of it can influence network operations or be derived into outbound requests.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · CHANGELOG.md (reported line 29)May include surrounding context.

md
- 3.0.2: Bug fixes
- 3.0.1: Terminology cleanup for security scanner compatibility
- 3.0.0: All 200 issues fixed - complete CLI with all commands
- 2.3.0: All flags (issues 57-100), .env support, network selection
- 2.2.0: Security hardening (issues 17-56), type hints, retry logic
- 2.1.0: Secure local signing, first-launch tips, AI initial-buy
"""

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
- 3.0.2: Bug fixes
- 3.0.1: Terminology cleanup for security scanner compatibility
- 3.0.0: All 200 issues fixed - complete CLI with all commands
- 2.3.0: All flags (issues 57-100), .env support, network selection
- 2.2.0: Security hardening (issues 17-56), type hints, retry logic
- 2.1.0: Secure local signing, first-launch tips, AI initial-buy
"""

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
- 3.0.2: Bug fixes
- 3.0.1: Terminology cleanup for security scanner compatibility
- 3.0.0: All 200 issues fixed - complete CLI with all commands
- 2.3.0: All flags (issues 57-100), .env support, network selection
- 2.2.0: Security hardening (issues 17-56), type hints, retry logic
- 2.1.0: Secure local signing, first-launch tips, AI initial-buy
"""

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
- 3.0.2: Bug fixes
- 3.0.1: Terminology cleanup for security scanner compatibility
- 3.0.0: All 200 issues fixed - complete CLI with all commands
- 2.3.0: All flags (issues 57-100), .env support, network selection
- 2.2.0: Security hardening (issues 17-56), type hints, retry logic
- 2.1.0: Secure local signing, first-launch tips, AI initial-buy
"""

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · mya.py (reported line 28)May include surrounding context.

python
- 3.0.2: Bug fixes
- 3.0.1: Terminology cleanup for security scanner compatibility
- 3.0.0: All 200 issues fixed - complete CLI with all commands
- 2.3.0: All flags (issues 57-100), .env support, network selection
- 2.2.0: Security hardening (issues 17-56), type hints, retry logic
- 2.1.0: Secure local signing, first-launch tips, AI initial-buy
"""

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · mya.py (reported line 707)May include surrounding context.

python
- 3.0.2: Bug fixes
- 3.0.1: Terminology cleanup for security scanner compatibility
- 3.0.0: All 200 issues fixed - complete CLI with all commands
- 2.3.0: All flags (issues 57-100), .env support, network selection
- 2.2.0: Security hardening (issues 17-56), type hints, retry logic
- 2.1.0: Secure local signing, first-launch tips, AI initial-buy
"""

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · mya.py (reported line 712)May include surrounding context.

python
- 3.0.2: Bug fixes
- 3.0.1: Terminology cleanup for security scanner compatibility
- 3.0.0: All 200 issues fixed - complete CLI with all commands
- 2.3.0: All flags (issues 57-100), .env support, network selection
- 2.2.0: Security hardening (issues 17-56), type hints, retry logic
- 2.1.0: Secure local signing, first-launch tips, AI initial-buy
"""

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 · mya.py (reported line 275)May include surrounding context.

python
AccountMeta(TOKEN_PROGRAM_ID, is_signer=False, is_writable=False),   # token program
    ]
    
    return Instruction(ASSOCIATED_TOKEN_PROGRAM_ID, bytes(), accounts)


def build_transfer_instruction(from_pubkey: Pubkey, to_pubkey: Pubkey, lamports: int) -> Instruction:

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 · mya.py (reported line 289)May include surrounding context.

python
AccountMeta(TOKEN_PROGRAM_ID, is_signer=False, is_writable=False),   # token program
    ]
    
    return Instruction(ASSOCIATED_TOKEN_PROGRAM_ID, bytes(), accounts)


def build_transfer_instruction(from_pubkey: Pubkey, to_pubkey: Pubkey, lamports: int) -> Instruction:

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 · mya.py (reported line 322)May include surrounding context.

python
AccountMeta(TOKEN_PROGRAM_ID, is_signer=False, is_writable=False),   # token program
    ]
    
    return Instruction(ASSOCIATED_TOKEN_PROGRAM_ID, bytes(), accounts)


def build_transfer_instruction(from_pubkey: Pubkey, to_pubkey: Pubkey, lamports: int) -> Instruction:

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 · mya.py (reported line 361)May include surrounding context.

python
AccountMeta(TOKEN_PROGRAM_ID, is_signer=False, is_writable=False),   # token program
    ]
    
    return Instruction(ASSOCIATED_TOKEN_PROGRAM_ID, bytes(), accounts)


def build_transfer_instruction(from_pubkey: Pubkey, to_pubkey: Pubkey, lamports: int) -> Instruction:

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 · mya.py (reported line 395)May include surrounding context.

python
AccountMeta(TOKEN_PROGRAM_ID, is_signer=False, is_writable=False),   # token program
    ]
    
    return Instruction(ASSOCIATED_TOKEN_PROGRAM_ID, bytes(), accounts)


def build_transfer_instruction(from_pubkey: Pubkey, to_pubkey: Pubkey, lamports: int) -> Instruction:

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · mya.py (reported line 705)May include surrounding context.

python
_runtime = config


# ============== .ENV SUPPORT ==============

# Only load these vars from .env — all others are ignored
ALLOWED_ENV_VARS = {"SOUL_API_URL", "SOUL_SSL_VERIFY", "HELIUS_RPC", "SOLANA_RPC_URL"}

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · mya.py (reported line 715)May include surrounding context.

python
"""Load .env file (whitelisted vars only)."""
    env_vars: Dict[str, str] = {}
    search_paths = [path] if path else []
    search_paths.extend([Path.home() / ".mintyouragent" / ".env"])

    for env_path in search_paths:
        if env_path and env_path.exists():

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The setup flow intentionally prints the full private signing key and writes recovery key material in plaintext to disk as part of normal operation. In an agent or shared-console environment, this creates a direct secret disclosure path through stdout, logs, terminal history, screenshots, or downstream tooling that captures command output.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The wallet export/show-key command is a built-in secret exfiltration primitive that reveals the complete signing key on demand. In a skill ecosystem, any natural-language instruction or automation that triggers this path can leak full wallet control and permanently compromise funds.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Unsigned deposit transactions returned by the server are signed in poker join/create/reload flows without transaction decoding, human-readable review, or explicit user confirmation. A compromised or malicious API could supply a transaction that transfers more funds or performs unrelated actions, and the local wallet would sign it blindly.

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 · CHANGELOG.md (reported line 10)May include surrounding context.

md
### Added
- **Poker**: Heads-up Texas Hold'em with real SOL stakes via on-chain escrow
- **Soul/Link**: Extract agent personality (SOUL.md) and link identity to mintyouragent.com
- **Native Launches**: Bundled create + buy transactions via pump.fun (atomic, like the webapp)
- **Balance Validation**: Pre-launch check ensures sufficient SOL before spending
- **Preflight Checks**: Server-side rate limit validation before launch transactions

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README promotes launching tokens and playing poker with real SOL but does not prominently warn that these actions can spend real funds and trigger irreversible on-chain transactions. In an AI-agent context, this omission is more dangerous because agents or operators may treat the tool as routine automation and enable value-bearing actions without appreciating the financial risk.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

Documenting a --yes flag that skips confirmation prompts is risky in a tool that can transfer SOL, launch tokens, and join or create real-money poker games. In this skill context, removing human confirmation lowers the barrier to accidental or autonomous financial actions, especially when combined with JSON/headless agent workflows.

Content

Scanner excerpt · README.md (reported line 138)May include surrounding context.

md
| `--network` | mainnet/devnet/testnet |
| `--verbose` | Verbose logging |
| `--debug` | Debug mode |
| `-y, --yes` | Skip confirmation prompts |

## Wallet Storage

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The wallet storage section lists wallet.json and RECOVERY_KEY.txt locations but does not clearly state that anyone who obtains these files may fully control the wallet and steal funds. This is particularly risky in an agent skill because automated deployments often run on shared hosts, developer workstations, or CI-like environments where home-directory secrets may be exposed or backed up insecurely.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill documents capabilities that imply shell, filesystem, environment, and network access, but it does not declare any explicit tool scope or permission boundaries. In an agent setting, this weakens reviewability and can cause the runtime to grant broader powers than users expect, increasing the chance of unsafe execution involving wallet files, API keys, or fund-moving commands.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The transfer command is presented without warning that it moves funds irreversibly on-chain. In an agent-operated wallet, undocumented irreversibility increases the risk of user confusion, accidental transfers, or automation performing value-bearing actions without adequate review.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

An uninstall command that removes all data is documented without a prominent warning about irreversible deletion of wallet-related files, backups, logs, and recovery material. In an agent context, especially with support for non-interactive flags, this can lead to accidental or automated destruction of critical assets and loss of access.

Content

No source excerpt is available for this finding.