Back to skill

Security audit

Solana Token Monitor

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it says, but it handles Telegram bot credentials in a risky and under-disclosed way and adds unrelated crypto promotion to reports.

Install only if you are comfortable with the skill storing monitor state locally and making repeated network calls to DexScreener. Avoid using the Telegram option unless you are willing to expose a bot token to a plaintext config file and possible command history; use a dedicated low-privilege bot token and revoke it if it may have been logged. Expect generated reports to include ShepDog/$SHEP promotional text.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T01 · Skill Instruction Hijacking

Error
Location
monitor.py:259
Finding

Unconditional Third-Party Promotional Content in User-Facing Reports

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
monitor.py:64
Finding

Telegram Bot Credentials Stored in Plaintext and Accepted Through Command-Line Arguments

Content
View full analysis
= 4: # Optional: --telegram-token TOKEN --chat-id ID args = sys.argv[4:] tg_token = None chat_id = None for i, a in enumerate(args): if a == "--telegram-token" and i + 1 < len(args): tg_token = args[i + 1] if a == "--chat-id" and i + 1 < len(args): chat_id = args[i + 1] setup_monitor(sys.argv[2], sys.argv[3], tg_token, chat_id) ``` The documented invocation encourages command-line transmission: ```bash python3 ~/.openclaw/workspace/skills/solana-token-monitor/monitor.py setup --telegram-token --chat-id ``` ### Technical Analysis A Telegram bot token is an authentication credential. The skill receives it as a command-line argument and then writes it in plaintext to `~/.openclaw/workspace/data/token-monitors/{SYMBOL}.json`. Command-line secrets may be exposed through shell history, process inspection, command logging, terminal capture, or agent execution logs. After se ...[truncated 2026 chars]
Remediation
View remediation
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 (8)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The invocation guidance is overly broad and includes common phrases like monitoring a token, watching a price, or asking how a token is doing. In an agent environment, this can cause the skill to activate when the user did not explicitly consent to running this specific tool, leading to unintended command execution and network activity against token-monitoring endpoints.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The instructions encourage passing Telegram bot credentials on the command line and storing them in config without warning about sensitivity, retention, or exposure risks. Secrets supplied this way may be visible in shell history, process listings, logs, or persisted skill configuration, which could let an attacker reuse the bot token to read or send alerts and impersonate the user's notification channel.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises executable setup and monitoring commands that imply filesystem access and outbound network use, but it does not declare any explicit tool scope or permissions metadata. In an agent ecosystem, missing scope declarations reduce transparency and can cause the agent or user to grant broader capabilities than expected, increasing the risk of unintended file access or network activity.

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 · SKILL.md (reported line 81)May include surrounding context.

md
import os
from datetime import datetime, timezone

DEXSCREENER_URL = "https://api.dexscreener.com/tokens/v1/solana/{}"
TELEGRAM_API_URL = "https://api.telegram.org/bot{}/sendMessage"
DATA_DIR = os.path.expanduser("~/.openclaw/workspace/data/token-monitors")

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 · monitor.py (reported line 16)May include surrounding context.

python
import os
from datetime import datetime, timezone

DEXSCREENER_URL = "https://api.dexscreener.com/tokens/v1/solana/{}"
TELEGRAM_API_URL = "https://api.telegram.org/bot{}/sendMessage"
DATA_DIR = os.path.expanduser("~/.openclaw/workspace/data/token-monitors")

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The Telegram API endpoint is used to transmit alerts and, when configured, includes user-provided bot credentials and message contents to a third-party service. In this skill context, that behavior is intentional and core to functionality, but it still creates an external data transmission path that can expose token-monitor activity and relies on secure handling of a sensitive bot token.

Content

Scanner excerpt · monitor.py (reported line 17)May include surrounding context.

python
from datetime import datetime, timezone

DEXSCREENER_URL = "https://api.dexscreener.com/tokens/v1/solana/{}"
TELEGRAM_API_URL = "https://api.telegram.org/bot{}/sendMessage"
DATA_DIR = os.path.expanduser("~/.openclaw/workspace/data/token-monitors")

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script persists the Telegram bot token and chat ID directly into a JSON config file under the user's workspace directory. While this is not inherently malicious, storing reusable secrets in plaintext without warning, minimization, or file-permission hardening increases the risk of credential disclosure through local compromise, backups, logs, or other tools reading the workspace.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The setup instructions ask users to provide a Telegram bot token and chat ID directly on the command line without any warning about secret exposure. Command-line secrets can leak through shell history, process listings, logs, or agent telemetry, which could allow an attacker to hijack the bot and read or send messages.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.