Back to skill

Security audit

Token Scout

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its token-analysis purpose, but one included shell script has a confirmed argument-handling bug that can run unintended local commands if given a malicious page-count argument.

Install only if you are comfortable with shell scripts that query third-party token APIs, and avoid running small-cap-scanner.sh with arguments from untrusted sources until its numeric parameters are strictly validated. Treat the token output as research data, not trading advice.

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

Error
Location
scripts/small-cap-scanner.sh:10
Finding

Arbitrary Command Execution Through Unvalidated Arithmetic Input

Content
View full analysis
Remediation
View remediation
100 )); then echo "Error: pages must be an integer between 1 and 100" >&2 exit 2 fi ``` After validation, copy the value into an explicitly numeric variable and use that variable in the loop: ```bash PAGE_LIMIT=$((10#$PAGES)) for ((page=1; page<=PAGE_LIMIT; page++)); do # Scan page done ``` The `10#` prefix forces decimal interpretation and avoids accidental octal handling for values with leading zeroes. Apply equivalent allow-list validation to all externally supplied parameters: - Restrict `CHAIN` to the documented supported network identifiers. - Require `MAX_FDV` and `MIN_LIQUIDITY` to be bounded non-negative integers. - Require `MIN_BUY_RATIO` to match a narrowly defined decimal-number format. - Reject unexpected extra arguments. - Avoid placing untrusted text directly into Bash arithmetic expressions or dynamically evaluated `bc` programs. For additional hardening, enable strict shell behavior after argument validation: ```bash set -euo pipefail ``` Add regression tests that pass arithmetic metacharacters, array syntax, command substitutions, negative values, excessively large values, and non-numeric strings. The tests should verify that all such inputs are rejected before the loop condition is evaluated. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
scripts/small-cap-scanner.sh base

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
scripts/small-cap-scanner.sh base

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises executable shell-based workflows via its scripts and metadata requirements (curl, jq) but does not declare any tool scope such as permissions or allowed-tools. In an agent ecosystem, this can cause the runtime or reviewer to underestimate the skill's execution capabilities, increasing the risk of unintended command execution or over-broad tool access when the skill is invoked.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description contains multiple broad trigger phrases such as find tokens, token analysis, and small cap, which are common enough to match loosely related user requests. Over-broad activation can route unrelated conversations into a shell-capable skill that fetches external data, creating unnecessary execution and network exposure and increasing the chance of unsafe or unintended actions.

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 · scripts/find-accumulation.sh (reported line 17)May include surrounding context.

sh
# Fetch trending pools
fetch_trending() {
    curl -s "https://api.geckoterminal.com/api/v2/networks/${NETWORK}/trending_pools?page=1"
}

# Parse and analyze pools

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 · scripts/small-cap-scanner.sh (reported line 25)May include surrounding context.

sh
# Fetch trending pools
fetch_trending() {
    curl -s "https://api.geckoterminal.com/api/v2/networks/${NETWORK}/trending_pools?page=1"
}

# Parse and analyze pools

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 · scripts/token-lookup.sh (reported line 23)May include surrounding context.

sh
# Fetch trending pools
fetch_trending() {
    curl -s "https://api.geckoterminal.com/api/v2/networks/${NETWORK}/trending_pools?page=1"
}

# Parse and analyze pools

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 · scripts/token-scanner.sh (reported line 12)May include surrounding context.

sh
# Fetch trending pools
fetch_trending() {
    curl -s "https://api.geckoterminal.com/api/v2/networks/${NETWORK}/trending_pools?page=1"
}

# Parse and analyze pools

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script formats its completion timestamp using TZ='America/Los_Angeles' and labels it PST, which forces a specific locale/timezone choice in natural-language output for all users. This can violate language/locale policy requirements when no user choice or region-specific justification is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The completion message forces the timestamp to use America/Los_Angeles and labels it PST, regardless of the user's actual locale or preferences. This is a natural-language locale policy issue because the script presents a fixed regional setting without offering choice or documenting why that locale is required.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This shell script sends the provided token address and selected network to geckoterminal.com via curl, which is a network operation covered by the warning requirement for code files. Although the script prints that it is "looking up" the token, it does not clearly disclose that the input will be transmitted to a third-party service or document that behavior in comments/docstrings.

Content

No source excerpt is available for this finding.