Back to skill

Security audit

NadFun Token Creation

Security checks for vulnerabilities and agentic risk

Overview

This skill matches its token-creation purpose, but it asks users to rely on an unpinned wallet skill and can submit irreversible value-spending blockchain transactions without a required final confirmation step.

Review this skill carefully before installing. Use a dedicated low-balance wallet, verify the exact monad-development package and publisher before relying on it, and require a final manual confirmation of the contract address, chain, token parameters, fees, initial buy value, and decoded transaction before signing.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Error
Location
SKILL.md:10
Finding

Unpinned Security-Critical Wallet Skill Dependency

Content
View full analysis
Remediation
View remediation
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 (7)

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This step transmits a user-supplied image to an external third-party API, which creates a privacy and data-handling risk because uploaded content leaves the local environment and is processed remotely. In a skill context, this is especially relevant because users may not realize their files are being sent off-platform and stored on CDN-backed infrastructure.

Content

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

  • Returns: image_uri (CDN URL) and is_nsfw (boolean)
js
const imageResponse = await fetch("https://api.nadapp.net/agent/token/image", {
  method: "POST",
  headers: { "Content-Type": imageFile.type },
  body: imageFile,

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

This step transmits a user-supplied image to an external third-party API, which creates a privacy and data-handling risk because uploaded content leaves the local environment and is processed remotely. In a skill context, this is especially relevant because users may not realize their files are being sent off-platform and stored on CDN-backed infrastructure.

Content

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

  • Returns: image_uri (CDN URL) and is_nsfw (boolean)
js
const imageResponse = await fetch("https://api.nadapp.net/agent/token/image", {
  method: "POST",
  headers: { "Content-Type": imageFile.type },
  body: imageFile,

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

This request sends token metadata and associated social links to an external API for storage, which is a real external data transmission and may expose user-provided content to third-party processing and persistence. Because the metadata becomes part of a token creation flow, users may assume it is only local preparation when it is actually being uploaded externally.

Content

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

| telegram | string or null | Must contain t.me and start with https:// |

js
const metadataResponse = await fetch("https://api.nadapp.net/agent/token/metadata", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({

External Transmission

Medium
Category
Data Exfiltration
Confidence
90% confidence
Finding

This request sends token metadata and associated social links to an external API for storage, which is a real external data transmission and may expose user-provided content to third-party processing and persistence. Because the metadata becomes part of a token creation flow, users may assume it is only local preparation when it is actually being uploaded externally.

Content

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

| telegram | string or null | Must contain t.me and start with https:// |

js
const metadataResponse = await fetch("https://api.nadapp.net/agent/token/metadata", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

This step sends the creator wallet address, token details, and metadata URI to an external API, exposing linkage between the user's wallet and token creation intent to a third party. While not inherently malicious, it is a genuine confidentiality and operational-risk concern because the service learns planned deployment details before the on-chain action occurs.

Content

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

| metadata_uri | string | Metadata URI from Step 2 |

js
const saltResponse = await fetch("https://api.nadapp.net/agent/salt", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({

External Transmission

Medium
Category
Data Exfiltration
Confidence
91% confidence
Finding

This step sends the creator wallet address, token details, and metadata URI to an external API, exposing linkage between the user's wallet and token creation intent to a third party. While not inherently malicious, it is a genuine confidentiality and operational-risk concern because the service learns planned deployment details before the on-chain action occurs.

Content

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

| metadata_uri | string | Metadata URI from Step 2 |

js
const saltResponse = await fetch("https://api.nadapp.net/agent/salt", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill culminates in an on-chain contract call that can transfer real value via msg.value, but it does not require an explicit user confirmation or prominently warn that funds may be spent and an irreversible blockchain transaction will be submitted. In an agent setting, omission of a pre-transaction warning materially increases the risk of unintended token deployment, accidental spending, or social-engineered use of the workflow.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.