Back to skill

Security audit

Moralis Data Api

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly documents legitimate Moralis blockchain lookups, but it includes a metadata-resync operation that can change external state despite being presented mainly as a data-query skill.

Install only if you intend to use Moralis as a third-party blockchain data provider. Protect MORALIS_API_KEY, avoid exposing it in logs or shell history, and treat wallet addresses, portfolio/history, profitability, and net-worth lookups as sensitive financial intelligence. Require explicit user confirmation before using reSyncMetadata because it updates/resyncs external NFT metadata state rather than merely reading data.

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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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 (54)

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This skill is described as a query-oriented blockchain data API, but the documented endpoint performs a state-changing resync/update operation on NFT metadata. In an agent context, exposing a mutating operation under a data-retrieval skill can cause unintended external side effects, surprise writes, or abuse of privileged API keys when the user only expected read-only behavior.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
### API Key (optional)

**Never ask the user to paste their API key into the chat.** Instead:

1. Check if `MORALIS_API_KEY` is set in the environment (try running `[ -n "$MORALIS_API_KEY" ] && echo "API key is set" || echo "API key is NOT set"`).
2. If not set, offer to create the `.env` file with an empty placeholder: `MORALIS_API_KEY=`

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · references/CommonPitfalls.md (reported line 20)May include surrounding context.

md
## Data Type Assumptions (MOST COMMON BUG SOURCE)

**NEVER assume these without checking the rule file:**

| Field          | Wrong Assumption            | Reality                                 |
| -------------- | --------------------------- | --------------------------------------- |

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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/FilteredTokens.md (reported line 109)May include surrounding context.

1. Top tokens by 24h volume on Ethereum

bash
curl -X POST "https://deep-index.moralis.io/api/v2.2/discovery/tokens" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · rules/getFilteredTokens.md (reported line 47)May include surrounding context.

Example (curl)

bash
curl -X POST "https://deep-index.moralis.io/api/v2.2/discovery/tokens" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

This skill explicitly directs transmission of user-supplied NFT identifiers to an external service using an authenticated API call. In this skill's context, external transmission is expected functionality, but it is still security-relevant because wallet, NFT, and transaction-related queries can reveal sensitive financial associations, and the example does not document consent, minimization, or handling of the API key.

Content

Scanner excerpt · rules/getMultipleNFTs.md (reported line 88)May include surrounding context.

Example (curl)

bash
curl -X POST "https://deep-index.moralis.io/api/v2.2/nft/getMultipleNFTs?chain=eth" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · rules/getMultipleTokenAnalytics.md (reported line 93)May include surrounding context.

Example (curl)

bash
curl -X POST "https://deep-index.moralis.io/api/v2.2/tokens/analytics" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · rules/getMultipleTokenMetadata__solana.md (reported line 68)May include surrounding context.

Example (curl)

bash
curl -X POST "https://solana-gateway.moralis.io/token/mainnet/metadata" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · rules/getMultipleTokenPrices__evm.md (reported line 67)May include surrounding context.

Example (curl)

bash
curl -X POST "https://deep-index.moralis.io/api/v2.2/erc20/prices?chain=eth&include=" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · rules/getMultipleTokenPrices__solana.md (reported line 62)May include surrounding context.

Example (curl)

bash
curl -X POST "https://solana-gateway.moralis.io/token/mainnet/prices" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · rules/getNFTBulkContractMetadata.md (reported line 81)May include surrounding context.

Example (curl)

bash
curl -X POST "https://deep-index.moralis.io/api/v2.2/nft/metadata?chain=eth" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · rules/getNFTByContractTraits.md (reported line 114)May include surrounding context.

Example (curl)

bash
curl -X POST "https://deep-index.moralis.io/api/v2.2/nft/0x524cab2ec69124574082676e6f654a18df49a048/nfts-by-traits?chain=eth&format=decimal" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation instructs users to make an authenticated request to Moralis using both a wallet address and an API key, but it does not warn that this data is sent to a third-party service. While wallet addresses are public on-chain identifiers, associating a queried address with a specific user, workflow, or internal investigation can still create privacy, attribution, and data-governance risks, and exposing API-key usage patterns may also have operational sensitivity.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

This skill documents an API call that retrieves a wallet’s full Solana portfolio, including balances, tokens, and NFTs, but provides no user-facing warning that the queried address and resulting financial profile may be sensitive. In an agent context, users may supply their own wallet or ask about third-party wallets without understanding the privacy implications, which can enable unwanted financial profiling or disclosure of holdings.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · rules/getTimeSeriesTokenAnalytics.md (reported line 58)May include surrounding context.

Example (curl)

bash
curl -X POST "https://deep-index.moralis.io/api/v2.2/tokens/analytics/timeseries?timeframe=1d" \
  -H "accept: application/json" \
  -H "X-API-Key: $MORALIS_API_KEY" \
  -H "Content-Type: application/json" \

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This skill instructs callers to send a wallet address and API key to a third-party service but provides no privacy or data-handling warning. Wallet history can reveal holdings, counterparties, behavior, and other sensitive financial metadata, so users may unknowingly disclose transaction intelligence to an external provider.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This documentation instructs agents to send wallet addresses and derived financial portfolio data to Moralis, a third-party API, but does not disclose the privacy implications or advise user consent. Wallet addresses are pseudonymous rather than anonymous, and net-worth lookups can expose sensitive holdings and behavioral data when correlated across chains.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill instructs the agent to send a user-supplied wallet address to Moralis, a third-party API, without any disclosure that wallet-related data will be transmitted off-platform. While blockchain addresses are often public, they can still be sensitive in context because they may reveal financial holdings, trading behavior, and identity-linked activity when correlated with other information.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Labeling the operation as GET while the documentation says it updates or resyncs metadata is dangerous because GET is widely assumed to be safe and side-effect-free. Agents, middleware, caches, link previewers, or automated tooling may invoke such an endpoint more freely, increasing the chance of accidental state changes or repeated triggering.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documentation presents metadata resync as a simple operation without warning that it changes external state or may trigger downstream fetches and updates from token URIs. In an agent setting, this omission makes the skill more dangerous because users and orchestrators may treat it like passive data access, leading to unintentional writes or externally triggered processing.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The markdown states the skill should be used for wallet balances, transaction history, profitability, net worth, and other address-linked data, which implies sending user-supplied wallet identifiers and queries to the Moralis API. While authentication setup is documented, there is no explicit warning that requested wallet/address data will be transmitted to a third-party service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This markdown file includes a curl example that requires the X-API-Key header via $MORALIS_API_KEY, which involves use of a credential. The description does not include any warning or note about handling secrets, even though SQP-2 for markdown files covers omissions related to privacy or system integrity.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The document instructs users to call an authenticated third-party API using wallet address and protocol parameters, but it does not clearly disclose that this data is sent to Moralis. Wallet addresses and DeFi position lookups can reveal sensitive financial holdings and behavior, so lack of disclosure can create privacy, compliance, and user-consent issues even if no direct code execution risk exists.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

This markdown file includes a curl example that sends an API key from the MORALIS_API_KEY environment variable, but the documentation does not warn users that a credential is required or that it will be transmitted in the request header. For markdown files, credentials and network-affecting behavior should be disclosed when relevant to user privacy or system integrity.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

This markdown file includes a curl example that sends an API key from the MORALIS_API_KEY environment variable in an HTTP header, but the document does not warn users that they must provide and protect a credential when invoking the request. For markdown files, credential use and network transmission should be disclosed when they may affect privacy or security posture.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.