T01 · Skill Instruction Hijacking
- Location
scripts/format-report.sh:235- Finding
Mandatory Promotional Footer Hijacks Report Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This read-only Solana rug-checker mostly does what it says, but it needs Review because attacker-controlled token text can be inserted into reports and broad triggers can send ambiguous text to public APIs.
Review before installing, especially for Discord or other public-channel use. Do not paste secrets as token identifiers, verify the exact token address before running a check, and treat every report as informational rather than investment advice. The publisher should add output sanitization, length limits, and stricter confirmation for ambiguous triggers.
scripts/format-report.sh:235Mandatory Promotional Footer Hijacks Report Output
scripts/format-report.sh:55Untrusted Token Metadata Is Rendered Without Markdown or Discord Sanitization
The skill promises a read-only 10-point on-chain rug analysis and visual report, but the visible file only specifies shell commands and workflow text without proving those checks exist. This can mislead users into overtrusting output as a security assessment, especially in a financial-scam detection context where false reassurance can cause monetary loss.
Referenced artifact was not completely inspected
bash scripts/analyze-risk.sh <token_address>
Referenced artifact was not completely inspected
bash scripts/analyze-risk.sh <token_address>
The skill uses 'shell' capability that is not listed in its permissions. This may indicate deceptive intent or missing permission declarations.
The skill advertises very broad natural-language triggers such as 'Is BONK safe?' and 'Check this pump.fun token for me', which can cause the agent to invoke the skill in response to ambiguous conversational prompts rather than an explicit command. In an agent environment, unintended invocation can lead to unnecessary network access, user confusion, and incorrect reliance on a token-risk report when the user may have meant a general question or a different task.
Overly broad natural-language triggers can cause the skill to activate in conversations that merely mention scams, safety, audits, or token risk without an explicit request to run this tool. In a network-enabled skill, unintended activation can lead to unnecessary external lookups, confusion, and misapplication of financial-risk outputs to unrelated context.
Auto-triggering on any 32-44 character base58-like string is risky because many unrelated identifiers may match that pattern. This can cause the skill to exfiltrate user-provided strings to external token-resolution services or produce misleading analysis on the wrong artifact, especially in mixed chat environments like Discord.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -s "https://api.rugcheck.xyz/v1/stats/recent" | jq 'length' curl -s "https://api.dexscreener.com/tokens/v1/solana/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263" | jq '.[0].baseToken.name'
## Test Matrix
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Constants
# ---------------------------------------------------------------------------
readonly DEXSCREENER_BASE="https://api.dexscreener.com"
readonly RUGCHECK_BASE="https://api.rugcheck.xyz/v1"
readonly SOLANA_RPC="${SOLANA_RPC_URL:-https://api.mainnet-beta.solana.com}"
readonly DEXSCREENER_RATE_LIMIT=300 # req/min for search/tokens/pairs
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Constants
# ---------------------------------------------------------------------------
readonly DEXSCREENER_BASE="https://api.dexscreener.com"
readonly RUGCHECK_BASE="https://api.rugcheck.xyz/v1"
readonly SOLANA_RPC="${SOLANA_RPC_URL:-https://api.mainnet-beta.solana.com}"
readonly DEXSCREENER_RATE_LIMIT=300 # req/min for search/tokens/pairs
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Constants
# ---------------------------------------------------------------------------
readonly DEXSCREENER_BASE="https://api.dexscreener.com"
readonly RUGCHECK_BASE="https://api.rugcheck.xyz/v1"
readonly SOLANA_RPC="${SOLANA_RPC_URL:-https://api.mainnet-beta.solana.com}"
readonly DEXSCREENER_RATE_LIMIT=300 # req/min for search/tokens/pairs
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
# Constants
# ---------------------------------------------------------------------------
readonly DEXSCREENER_BASE="https://api.dexscreener.com"
readonly RUGCHECK_BASE="https://api.rugcheck.xyz/v1"
readonly SOLANA_RPC="${SOLANA_RPC_URL:-https://api.mainnet-beta.solana.com}"
readonly DEXSCREENER_RATE_LIMIT=300 # req/min for search/tokens/pairs
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
done
if [[ ${#missing[@]} -gt 0 ]]; then
cf_error "Missing required dependencies: ${missing[*]}"
cf_error "Install with: sudo apt install ${missing[*]} (or brew install ${missing[*]})"
cf_error "Note: 'bc' is required for all floating-point risk comparisons."
return 1
fi
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
local tmpfile
tmpfile=$(cf_mktemp)
local http_code
http_code=$(curl -s -o "$tmpfile" -w "%{http_code}" \
--max-time "$timeout" \
-X POST \
-H "Content-Type: application/json" \
Declared permissions with no matching code capability may indicate removed functionality or pre-staging for future abuse.