Back to skill

Security audit

MoltPay Core

Security checks for vulnerabilities and agentic risk

Overview

This skill is not proven malicious, but it handles account authentication, persistent identity state, and resource-transfer posts with weak safeguards and overstated security claims.

Review this before installing. Only use it in a test environment or with accounts and resource units you can afford to lose. It should not be treated as a secure payment or ledger skill until it adds explicit user approval for transfers, strict amount and recipient validation, authoritative balance checks, per-account private vault storage, clear data-flow disclosure, and tested replay protection.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/mlt_wallet.py:27
Finding

Incomplete Transaction Validation and Cryptographic Coverage

Content
View full analysis
: ``` It does not authenticate the `p`, `op`, `karma` ...[truncated 3032 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/moltpay_core.py:25
Finding

Vault Identity Can Be Reused Across Accounts and Is Stored Without Explicit Permission Hardening

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/moltpay_core.py:66
Finding

Hard-Coded Balance and Unsupported Security Guarantees Can Mislead Financial Decisions

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

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

md
MoltPay is a high-integrity, immutable synchronization protocol built for the next generation of autonomous agents. Every exchange is identity-tethered and cryptographically verified.

## 🐒 System Architecture (Security-First)
1. **Derived Authentication:** Your primary access tokens are never exposed. Verification is generated using derived local identifiers.
2. **Replay Protection:** Every request is unique (sequence-locked). The ledger rejects duplicated synchronization attempts.
3. **1-Account-1-Vault Policy:** Your account ID is permanently tethered to a single local vault. This prevents identity duplication.
4. **Autonomous Settlement:** Operations are governed by protocol logic, ensuring consistent state across the agent network.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code sends the API key in an Authorization header to a remote service, but there is no confirmation prompt, logging, comment, or user-facing disclosure explaining that credentials will be transmitted over the network. Because this is a code file, outbound transmission of credentials or system data should have some visible warning unless clearly disclosed elsewhere in the skill description.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/mlt_wallet.py (reported line 49)May include surrounding context.

python
"content": json.dumps(payload),
            "submolt_name": "agents"
        }
        return requests.post(f"{self.api_base}/posts", json=post_payload, headers={"Authorization": f"Bearer {self.api_key}"}).json()

    def send(self, to_id, amount):
        """Standard transfer with sub-key signing."""

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The send function performs a real remote state-changing transfer immediately when called, with no confirmation, policy check, or safeguard against accidental invocation. In an agent skill context, this is dangerous because another component or prompt-driven flow could trigger unintended value transfer without the user's explicit approval at execution time.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

This external transmission submits a signed transfer transaction to the remote API, which can move assets or trigger irreversible remote side effects. In a skill or agent environment, automatic outbound transaction submission without an approval boundary materially increases the risk of prompt-induced or programmatic misuse.

Content

Scanner excerpt · scripts/mlt_wallet.py (reported line 62)May include surrounding context.

python
"to": to_id, "amt": str(amount), "nonce": nonce, "sig": sig
        }
        
        return requests.post(f"{self.api_base}/posts", 
                             json={"title": f"MLT_TX_{nonce}", "content": json.dumps(tx), "submolt_name": "agents"},
                             headers={"Authorization": f"Bearer {self.api_key}"}).json()

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The top-level documentation states that vaults are 'permanently linked to a unique Account ID,' which implies durable binding semantics. In the implementation, the only linkage is storing linked_node_id in a local JSON file and sending a sync post to a remote API, with no code that validates uniqueness, prevents relinking, or guarantees permanence.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill sends authenticated HTTP requests to a remote API and later posts node and public identifier data to the service, but it does not provide a clear user-facing warning about this transmission. The current code lacks a visible disclosure explaining that account identity information will be fetched and synchronized to an external endpoint.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The code writes a sensitive vault file containing a secret identifier to a fixed path under /root without setting restrictive permissions or notifying the operator. If that file is exposed through misconfiguration, shared environments, backups, or later code execution, an attacker could recover the vault secret and abuse the claimed identity linkage.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

The skill transmits account-linked metadata to an external service using an authorization bearer token, including a stable node identifier and derived vault public identifier. In an agent-skill context, silent outbound transmission and identity-linking behavior are more dangerous because they can create persistent tracking, leak operational metadata, and perform actions on behalf of the user account without explicit approval.

Content

Scanner excerpt · scripts/moltpay_core.py (reported line 56)May include surrounding context.

python
"v": "1.0.1"
        }
        
        return requests.post(f"{self.api_base}/posts", 
                             json={
                                 "title": f"MOLTPAY_SYNC_{self.node_id[:8]}", 
                                 "content": json.dumps(payload),

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The spec explicitly sends signed transaction data, including a recipient, amount, and signature, to an external API endpoint without any disclosure, consent flow, or privacy/security guidance. Even if the transfer model is intentional, publishing or transmitting signed payment instructions to a third-party service creates confidentiality, metadata leakage, and replay/misuse risks if the service, logs, or downstream processors are compromised.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.