T09 Β· Insecure Skill Coding Practices
- Location
scripts/register-name.js:341- Finding
Unvalidated API Response Controls a Paid Blockchain Transaction
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is not clearly malicious, but it handles wallet keys and irreversible blockchain transactions with several under-disclosed or unsafe behaviors users should review first.
Review this skill before installing. Use only a low-value wallet, prefer dry-run first, do not rely on its availability or ownership lookup as authoritative, and avoid managed keystore mode until the plaintext fallback, custom encryption, transaction validation, and explicit confirmation issues are fixed.
scripts/register-name.js:341Unvalidated API Response Controls a Paid Blockchain Transaction
scripts/check-name.js:252Availability Checker Reports Simulated Guesses as On-Chain Results
scripts/my-names.js:91Owned-Name Lookup Uses Address-Based Mock Data Instead of the NNS Contract
scripts/register-name.js:289Managed Keystore Uses Deprecated Cipher APIs and Ignores the Generated IV
scripts/register-name.js:199Managed Mode Silently Accepts an Unencrypted Private-Key File
package.json:10Unpinned Dependency Resolution Prevents Reproducible Installation
The skill is presented as a naming-service registration tool, but the analysis indicates it also involves local wallet creation, keystore handling, and potential storage of private keys or mnemonic backups on disk. That is materially more sensitive than the declared purpose, and hidden credential-management behavior in an agent skill can lead to secret theft, insecure storage, or irreversible blockchain account compromise.
The skill is presented as a naming-service registration tool, but the analysis indicates it also involves local wallet creation, keystore handling, and potential storage of private keys or mnemonic backups on disk. That is materially more sensitive than the declared purpose, and hidden credential-management behavior in an agent skill can lead to secret theft, insecure storage, or irreversible blockchain account compromise.
The skill is presented as a naming-service registration tool, but the analysis indicates it also involves local wallet creation, keystore handling, and potential storage of private keys or mnemonic backups on disk. That is materially more sensitive than the declared purpose, and hidden credential-management behavior in an agent skill can lead to secret theft, insecure storage, or irreversible blockchain account compromise.
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
---
name: NadName Agent
description: "π Register .nad names on Monad blockchain via Nad Name Service (NNS). Real API integration with registerWithSignature, dynamic gas estimation, permanent ownership."
---
# π NadName Agent v2.0 - .nad Names on Monad
> Register permanent .nad names on Monad blockchain via Nad Name Service with real API integration
**TL;DR:** Get `yourname.nad` on Monad. One-time fee, lifetime ownership. Now with real NAD API integration and accurate pricing!
## What is NNS?
**Nad Name Service (NNS)** is a web3 name service built on Monad blockchain that maps human-readable names like `age
Referenced artifact was not completely inspected
node scripts/check-name.js myname
Referenced artifact was not completely inspected
node scripts/check-name.js myname
Referenced artifact was not completely inspected
node scripts/check-name.js myname
Referenced artifact was not completely inspected
node scripts/check-name.js myname
Referenced artifact was not completely inspected
node scripts/check-name.js myname
Referenced artifact was not completely inspected
node scripts/check-name.js myname
Referenced artifact was not completely inspected
node scripts/check-name.js myname
Referenced artifact was not completely inspected
node scripts/check-name.js myname
Referenced artifact was not completely inspected
node scripts/my-names.js
Referenced artifact was not completely inspected
node scripts/my-names.js
Referenced artifact was not completely inspected
node scripts/my-names.js
Referenced artifact was not completely inspected
node scripts/my-names.js
Referenced artifact was not completely inspected
node scripts/my-names.js
Referenced artifact was not completely inspected
node scripts/my-names.js
The script advertises accurate blockchain-backed availability checks, but its fallback logic does not query the NNS contract and instead fabricates availability based on a hardcoded list plus optimistic defaults. Users may rely on false 'available' results and proceed toward registration attempts, causing misinformed decisions, failed transactions, or trust abuse in a blockchain registration workflow where correctness is security-relevant.
The inline comments and function naming state that an on-chain availability check is performed, but the implementation only simulates results and even returns 'available' on errors. In the context of a blockchain naming/registration tool, this deceptive behavior can mislead operators and downstream automation into trusting unverified state, increasing the chance of failed or wasteful transactions.
The file and surrounding skill metadata imply real NNS functionality, but this script only performs read-only lookup behavior and even relies on simulated results. This is dangerous because users may make operational decisions based on false blockchain state, and the mismatch undermines trust in a wallet- or blockchain-facing tool.
The README instructs users to export a private key and run a registration command, but it does not clearly warn that this will submit a real blockchain transaction that spends funds and is generally irreversible once confirmed. In a blockchain-registration skill with real API integration, this omission can cause users to trigger unintended on-chain actions or fees under the assumption they are performing a harmless local test.
The skill documents use of the PRIVATE_KEY environment variable and managed keystore flows, but the manifest declares no explicit tool scope or permission boundary for environment access. In an agent setting, undeclared access to secrets increases the risk of accidental credential exposure or misuse because operators cannot clearly constrain what the skill is allowed to read.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Step 1: Get Registration Data
POST https://api.nad.domains/api/register-request
Body: {
"name": "myname",
"owner": "0x...",
The implementation explicitly enters simulation mode and fabricates name ownership results based on address substrings rather than querying the contract. In a blockchain naming context, presenting mock data as if it were authoritative can mislead users about ownership, primary names, or account state.
No suspicious patterns detected.