Back to skill

Security audit

Crypto Funding Alert

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-built for crypto funding scans, but its financial safety claims are stronger than what the code actually enforces.

Install only if you treat this as an informational market scanner, not an automated trading advisor. Review the code before using the recommendations, avoid passing unsafe leverage or stop-loss values, be aware it saves scan history locally by default, and do not enable webhook examples unless you are comfortable sending the output to that service.

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
scan.js:37
Finding

Unvalidated and Unenforced Financial Risk Controls

Content
View full analysis
c.trim().toUpperCase()); i++; break; case '--output': config.outputDir = next; i++; break; ``` ```javascript console.log('\n🏆 Recommended Actions:'); for (const s of strong.slice(0, 3)) { console.log(` ${s.coin}: Long ${config.maxLeverage}x | Stop-loss ${config.stopLossPct*100}% | Rate ${s.rate}% | Annual ${s.annualized3x}%`); } ``` ### Technical Analysis The command-line parser converts user-controlled arguments with `parseFloat()` and `parseInt()` but performs no subsequent validation. It does not reject missing values, non-finite values, negative values, zero, excessive leverage, or stop-loss percentages outside a meaningful range. Consequently, inputs such as the following are accepted: ```bash node scan.js --max-leverage 100 --stop-loss -1 node scan.js --max-leverage Infinity --min-volume NaN node scan.js --max-coins -50 ``` The resulting values are presented under a “Safety” heading and inserted directly into recommended actions. This contradicts the documented maximum leverage of 3x and minimum stop-loss expectations. Additional controls are configured but not enforced: ...[truncated 2272 chars]
Remediation
View remediation
max) { throw new Error(`${name} must be a finite number between ${min} and ${max}`); } return value; } config.maxLeverage = requireFiniteRange( '--max-leverage', Number(next), 1, 3 ); ``` ]]>
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 (10)

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The skill is presented as a real-time scanner with smart alerts and no API key requirement, but the documentation also reveals persistent local data storage and CLI recommendation output that are not clearly disclosed in the primary description. This can mislead users about what the skill actually does, reducing informed consent around data retention and operational behavior.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Edit the `SAFE_CONFIG` object in `scan.js`:

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The sample output switches to Chinese for key recommendation and history labels, which indicates the skill may present operational guidance in a fixed language. The file does not offer any language selection or explain a justified locale constraint, so this is a natural-language locale policy concern.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

The Discord webhook example transmits the full scan output to an external endpoint via curl. Even if intended as an integration example, it can leak locally generated trading signals, configuration-derived data, or future expanded output to third parties if users paste it blindly or use an untrusted webhook.

Content

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

bash
RESULT=$(node scan.js)
curl -X POST $DISCORD_WEBHOOK -H "Content-Type: application/json" -d "{\"content\":\"$RESULT\"}"

Custom Script

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script documents 'Stop-loss ≥ 10%' as a safety rule, but the --stop-loss argument accepts any numeric value, including tighter values below 10%, contradicting the stated risk controls. This mismatch can mislead users into believing the tool enforces conservative trading parameters when it does not.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script documents 'Stop-loss ≥ 10%' as a safety rule, but the --stop-loss argument accepts any numeric value, including tighter values below 10%, contradicting the stated risk controls. This mismatch can mislead users into believing the tool enforces conservative trading parameters when it does not.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script documents 'Stop-loss ≥ 10%' as a safety rule, but the --stop-loss argument accepts any numeric value, including tighter values below 10%, contradicting the stated risk controls. This mismatch can mislead users into believing the tool enforces conservative trading parameters when it does not.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill is described as a scanner with 'No API key needed for scanning', which implies read-only behavior, but it silently writes historical results to a default local path under the user's home/workspace. Undisclosed persistence can expose trading interests, scan history, and user-selected parameters to other local users, tooling, or backups, and violates least-surprise for a scanning utility.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

Historical scan results are appended to disk without disclosure near the write path or as an obvious opt-in behavior. While the data is not highly sensitive by itself, it can reveal market interests, timestamps, and user configuration, which is more concerning in a finance-related skill expected to be a simple scanner.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.