Back to skill

Security audit

Galleon DeFi Portfolio

Security checks for vulnerabilities and agentic risk

Overview

This is a read-only DeFi portfolio reporting skill that clearly discloses its external data-provider use and avoids transaction execution or hidden persistence.

Install only if you are comfortable letting the agent use your approved wallet/account scope and configured portfolio data providers to read financial holdings. Keep API keys in the credential store, review any recurring-report destination before enabling it, and treat rebalance outputs as planning information rather than authorization to move funds.

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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

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 · references/providers.md (reported line 9)May include surrounding context.

md
[Quickstart](https://developers.zerion.io/quickstart) documents Basic authentication with an API key as username and an empty password. Keep it in the operator's credential store; never log the encoded header.

The [positions endpoint](https://developers.zerion.io/api-reference/wallets/get-wallet-fungible-positions) is `GET https://api.zerion.io/v1/wallets/{address}/positions/`. Set `filter[positions]=no_filter` for wallet plus DeFi positions: the default `only_simple` omits protocol positions. Select reporting currency and chain filters, and retain position types including `loan`. This endpoint is not paginated: it returns all matching positions in one response. LP component positions share `group_id`; group rather than summing group totals and components together. Treat provider IDs as opaque. The docs currently note missing Solana protocol-position coverage; do not interpret absence as no positions. Respect task timeouts and quota responses.

The [portfolio endpoint](https://developers.zerion.io/api-reference/wallets/get-wallet-portfolio) gives an aggregate summary. Use it as a reconciliation check, not an additional asset to add to the position list. Different endpoint filters and refresh times can explain disagreements; expose them before declaring an accounting error.

Static analysis

No suspicious patterns detected.