Back to skill

Security audit

Pond3r Skill - Query Onchain Data

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a Pond3r data-query integration, but it includes under-scoped file reading and external report creation that users should review before installing.

Install only if you trust Pond3r with your query text and report descriptions. Avoid letting untrusted instructions choose --sql-file paths, keep POND3R_API_KEY out of logs and shared files, and treat report creation as a persistent external action that should require explicit user approval.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/query.mjs:34
Finding

Arbitrary Local File Disclosure Through Unrestricted --sql-file Input

Content
View full analysis
--sql \"SELECT ...\" | --sql-file "); process.exit(1); } const result = await callTool("query", { dataset_id: datasetId, sql: querySql }); ``` The corresponding outbound request is implemented in `scripts/client.mjs:76-98`: ```js export async function mcpCall(method, params = {}) { const apiKey = requireEnv("POND3R_API_KEY"); const headers = { "Content-Type": "application/json", Accept: "application/json, text/event-stream", Authorization: `Bearer ${apiKey}`, }; if (_sessionId) { headers["Mcp-Session-Id"] = _sessionId; } const body = { jsonrpc: "2.0", id: Date.now(), method, params, }; const res = await fetch(MCP_URL, { method: "POST", headers, body: JSON.stringify(body), }); ``` ### Technical Analysis The `--sql-file` option accepts an arbitrary filesystem path and passes it directly to `readFileSync`. The implementation does not constrain the path to a designated query directory, reject symbolic links, enforce a file extension or size limit, or verify that the resulting content is a read-only SQL statement. After the file is read, its complete contents are assigned to `querySql`, embedded in the `tools/call` request as the `sql` argument, and transmitted over HTTPS to the fixed Pond3r MCP endpoint. Any remote rejection or server-side SQL validation occurs only after the request body—and therefore the selected file contents—has already been transmitted. The documented “SELECT only” restriction ...[truncated 1869 chars]
Remediation
View remediation
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 (8)

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The file explicitly claims the integration is read-only and says no writes occur, yet it also instructs use of a POST endpoint to create reports. This contradiction can mislead users and reviewers into authorizing a skill that performs external state changes, which is more dangerous because scheduled reports may persist, trigger recurring activity, or send structured outputs to external systems.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill requires environment access for POND3R_API_KEY and network access to Pond3r endpoints, but it does not declare any explicit tool scope or allowed-tools boundary. That mismatch weakens least-privilege controls and can let a runtime grant broader capabilities than reviewers expect, increasing the chance of unintended external access or secret handling.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill is presented throughout as a read-only MCP query integration, but this section introduces a separate REST API that can create scheduled reports via POST. That is a scope expansion and a documentation integrity issue: operators may approve the skill expecting passive querying, while the agent is also instructed to perform state-changing actions against an external service.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 211)May include surrounding context.

Create Report

http
POST https://api.pond3r.xyz/v1/api/reports
Content-Type: application/json
x-api-key: <API_KEY>

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · SKILL.md (reported line 212)May include surrounding context.

Create Report

http
POST https://api.pond3r.xyz/v1/api/reports
Content-Type: application/json
x-api-key: <API_KEY>

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · reference.md (reported line 8)May include surrounding context.

Create Report

http
POST https://api.pond3r.xyz/v1/api/reports
Content-Type: application/json
x-api-key: <API_KEY>

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · reference.md (reported line 24)May include surrounding context.

Create Report

http
POST https://api.pond3r.xyz/v1/api/reports
Content-Type: application/json
x-api-key: <API_KEY>

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file includes a POST request to an external API and shows use of an x-api-key header, but it does not warn users that report descriptions and related data will be sent to a third-party service. It also does not mention basic credential-handling caution for the API key, which is relevant because the file is documentation for making authenticated network requests.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.env_credential_access

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
scripts/client.mjs:10