Back to skill

Security audit

PayPol Agent Marketplace

Security checks for vulnerabilities and agentic risk

Overview

This skill is openly for PayPol marketplace blockchain agents, but it enables broad real financial actions through free-form remote requests without enough endpoint, privacy, or confirmation controls.

Review this carefully before installing. Use only a tightly scoped PayPol API key with spending and agent limits, verify PAYPOL_AGENT_API is the intended trusted HTTPS endpoint, avoid putting secrets in prompts, and require human review before any transaction, approval, sweep, deployment, escrow release, or payroll action.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/paypol-discover.sh:21
Finding
API Credentials and Financial Instructions Can Be Sent to an Untrusted or Plaintext Endpoint<![CDATA[ ## Vulnerability Details **File Location**: `scripts/paypol-discover.sh:21-27`; `scripts/paypol-hire.sh:24-27,88-94`; `SKILL.md:28-33`; `references/api-reference.md:5-10` **Vulnerability Type**: Unrestricted destination for sensitive network transmissions **Risk Level**: High ### Vulnerable Code From `scripts/paypol-discover.sh`: ```bash API_BASE="${PAYPOL_AGENT_API:-https://paypol.xyz}" API_KEY="${PAYPOL_API_KEY:?Error: PAYPOL_API_KEY environment variable is required}" CATEGORY="${1:-}" # ── Fetch agents ────────────────────────────────────────────── RESPONSE=$(curl -s --max-time 30 \ -H "X-API-Key: ${API_KEY}" \ "${API_BASE}/marketplace/agents") ``` From `scripts/paypol-hire.sh`: ```bash API_BASE="${PAYPOL_AGENT_API:-https://paypol.xyz}" API_KEY="${PAYPOL_API_KEY:?Error: PAYPOL_API_KEY environment variable is required}" WALLET="${PAYPOL_WALLET:-openclaw-agent}" TIMEOUT="${PAYPOL_TIMEOUT:-120}" ``` ```bash RESPONSE=$(curl -s --max-time "$TIMEOUT" \ -X POST "${API_BASE}/agents/${AGENT_ID}/execute" \ -H "Content-Type: application/json" \ -H "X-API-Key: ${API_KEY}" \ -d "$(jq -n --arg prompt "$PROMPT" --arg wallet "$WALLET" \ '{prompt: $prompt, callerWallet: $wallet}')") ``` The API reference also explicitly permits configuration through an environment variable and documents a plaintext development endpoint: ```text Production: https://paypol.xyz Development: http://localhost:3000 ``` ```text Configure via `PAYPOL_AGENT_API` environment variable. ``` ### Technical Analysis The scripts accept `PAYPOL_AGENT_API` without validating its scheme, hostname, port, or trust level. They subsequently attach the PayPol API key to requests sent to that destination. The hiring script also transmits the user-controlled task prompt and caller wallet identifier. Endpoint configurability can be legitimate for development, but unrestricted endpoint selection is broader than the minimum privilege needed for production use. An attacker who can i ...[truncated 2244 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Default to `https://paypol.xyz` and reject custom production destinations unless they appear in an explicit administrator-controlled allowlist. 2. Parse the configured URL and validate its scheme and hostname before invoking `curl`. 3. Require HTTPS for all non-loopback endpoints. If local development is necessary, permit plaintext HTTP only when the parsed hostname is exactly a loopback address such as `localhost`, `127.0.0.1`, or `::1`. 4. Reject URLs containing embedded credentials, unexpected ports, fragments, or unsupported schemes. 5. Harden production requests with options such as: ```bash curl --fail --show-error --silent \ --proto '=https' \ --tlsv1.2 \ --max-time 30 \ -H "X-API-Key: ${API_KEY}" \ "https://paypol.xyz/marketplace/agents" ``` 6. Avoid following redirects for authenticated requests. If redirects are required, validate every destination and ensure credentials cannot be forwarded across origins. 7. Separate development and production configuration so enabling a development endpoint requires an explicit opt-in rather than an inherited environment variable. 8. Scope API keys to the minimum required agents and operations, apply spending limits, and rotate any key suspected of exposure. 9. Clearly warn users that task prompts are transmitted to the remote service and may contain sensitive financial information. 10. Require explicit user confirmation before remote agents perform irreversible or high-impact financial operations. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:12
Finding
Unused Unpinned Axios Dependency Introduces Avoidable Supply-Chain Risk<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:12-16` **Vulnerability Type**: Unnecessary and unpinned third-party dependency **Risk Level**: Medium ### Vulnerable Code ```yaml install: - kind: node package: axios bins: [] ``` ### Technical Analysis The Skill installation metadata requests the `axios` package without specifying an exact reviewed version or integrity information. None of the reviewed scripts or documentation-backed execution paths imports or invokes Axios; the shell scripts use `curl` for network communication and `jq` for JSON processing. Installing an unused dependency violates least-dependency principles and unnecessarily expands the Skill's software supply-chain attack surface. Because no version is pinned, installation behavior can change over time as package releases and transitive dependencies change. Depending on the package manager and installation environment, dependency lifecycle behavior may execute with the privileges of the user installing the Skill. No evidence in the reviewed project establishes that Axios itself is malicious. The issue is the avoidable exposure created by installing an unpinned package that is not required by the implementation. ### Attack Path 1. A user or automated framework installs the Skill and processes the installation metadata. 2. The package manager resolves the current Axios release and its transitive dependency tree rather than a fixed, previously reviewed dependency set. 3. A compromised, malicious, or unexpectedly changed package release is downloaded. 4. Package installation or lifecycle behavior executes in the installer context, or vulnerable dependency code becomes available to later processes. 5. The Skill gains no functional benefit from this exposure because the reviewed implementation does not use Axios. ### Impact Assessment Potential impact is bounded by the privileges of the account or automation environment performing installation. A compromised depend ...[truncated 474 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the Axios installation entry because the reviewed Skill implementation does not use it: ```yaml metadata: openclaw: requires: env: - PAYPOL_API_KEY anyBins: - curl ``` 2. Declare all tools that are genuinely required by the shell scripts, including `jq`, through the framework's appropriate binary requirement mechanism. 3. If future implementation code requires Axios, pin an exact reviewed version rather than resolving the latest release. 4. Use a committed lockfile and package integrity hashes where the Skill framework supports them. 5. Review the complete transitive dependency tree before release and use automated vulnerability and provenance checks. 6. Disable package lifecycle scripts during installation where practical. 7. Run dependency installation with a non-privileged account and without unrelated secrets in the environment. 8. Periodically remove unused dependencies to maintain the minimum necessary supply-chain footprint. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • 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 (11)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding
The description presents the skill as an execution-oriented capability for hiring marketplace agents and carrying out substantive on-chain operations. However, the code only performs read-only discovery of available agents via an HTTP API call to /marketplace/agents and formats the results for display. There is no logic for hiring an agent, submitting prompts, interacting with Tempo L1, invoking wallets/contracts, or performing any payment/escrow/stream/token/batch transaction functionality. This is a material mismatch in primary purpose and capabilities.

Missing User Warnings

High
Confidence
99% confidence
Finding
The inclusion of a 'wallet-sweeper' agent is highly destructive because it is designed to move all token balances to another wallet, yet the skill provides no prominent safety warning or execution constraints around it. In an LLM-driven workflow, this capability materially raises the risk of catastrophic asset loss from prompt injection, misunderstanding, or misuse.

Missing User Warnings

High
Confidence
98% confidence
Finding
The webhook section states that PayPol forwards job data including the user's prompt, wallet identifier, budget, and deadline to developer-hosted third-party webhooks, but it omits any warning or consent guidance. Because this marketplace coordinates external agents and real financial workflows, undisclosed forwarding of user task data to arbitrary community agent operators materially increases privacy, confidentiality, and targeting risks.

Lp3

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding
The skill exposes shell-based network execution but does not declare any explicit tool scope such as permissions or allowed-tools. This makes the operational boundary unclear and increases the chance that an agent can invoke networked shell commands capable of triggering real on-chain actions without adequate policy enforcement.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill prominently advertises real escrow, payment, deployment, and transfer capabilities but does not provide a strong upfront warning that actions may move funds or create irreversible on-chain transactions. In an agent setting, missing transaction-risk warnings can cause users or orchestrators to trigger destructive financial actions without appreciating the consequences.

External Transmission

Medium
Category
Data Exfiltration
Content
### Step 2: Execute an agent job
```bash
curl -s -X POST "${PAYPOL_AGENT_API:-https://paypol.xyz}/agents/{AGENT_ID}/execute" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $PAYPOL_API_KEY" \
  -d '{
Confidence
93% confidence
Finding
The skill sends user-supplied prompts and an API key to an external service, which then performs real blockchain-related actions. This is dangerous because sensitive intent and potentially financial instructions are transmitted off-platform to a third party, and the remote service can translate natural-language prompts into irreversible on-chain operations.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The example explicitly describes real on-chain escrow creation, fund locking, and payment release as an expected outcome, but it does not include a clear warning that these actions are financially impactful and may be irreversible once executed. In a skill designed to hire agents and perform smart contract operations, example commands can be treated as copy-paste-ready instructions, which increases the chance of accidental fund movement by users who assume the workflow is only illustrative.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The example walks a user through token deployment, approval, and batch distribution of assets on-chain but does not include any warning that these actions are real, irreversible transactions that can spend funds or create persistent approvals. In a skill specifically designed for smart contract execution, omission of transaction-risk warnings increases the chance that a user authorizes unintended approvals or distributions without understanding the consequences.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The execute endpoint documentation asks callers to submit a free-form prompt and wallet identifier to a remote service, but it does not warn that sensitive task content is transmitted off-box to PayPol infrastructure for processing. In a skill that triggers real on-chain operations, users may include secrets, financial details, or operational instructions, so the omission creates a meaningful privacy and data-handling risk through uninformed disclosure.

External Transmission

Medium
Category
Data Exfiltration
Content
fi

# ── Execute ───────────────────────────────────────────────────
RESPONSE=$(curl -s --max-time "$TIMEOUT" \
  -X POST "${API_BASE}/agents/${AGENT_ID}/execute" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: ${API_KEY}" \
Confidence
89% confidence
Finding
This script performs an external POST request to a remote service and includes both the API key in a header and user-controlled prompt/wallet data in the request body. External transmission is core to the tool's purpose, but it still represents a real security boundary crossing: sensitive prompts, wallet identifiers, and authorization material depend on the trustworthiness of the configured endpoint and the user's awareness of what leaves the system.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The script transmits the user-supplied prompt and wallet identifier to a remote PayPol API, but it does not provide any explicit warning, consent prompt, or redaction guidance before sending potentially sensitive operational data off-host. In the context of a blockchain/agent hiring tool, prompts may contain addresses, payment instructions, or business-sensitive details, so silent transmission increases privacy and operational risk even if the network call is expected.

Static analysis

No suspicious patterns detected.