Back to skill

Security audit

Crypto Alpha Scanner

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a straightforward crypto market report script, but its documented hourly cron setup creates persistent execution without enough guardrails.

Review the cron instructions carefully before installing. Prefer running the scanner manually or under a user-owned scheduler with a user-owned log path, log rotation, and a clear removal command. Treat Telegram publishing as public sharing unless you have verified the destination and secured any bot token.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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 (2)

T06 · System Persistence

Error
Location
SKILL.md:65
Finding

Optional Cron Configuration Creates Persistent Hourly Execution

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:65-72
Vulnerability Type: T06: System Persistence
Risk Level: High

Complete Code Snippet:

markdown
## Cron Setup

Run hourly for consistent alpha:

```bash
# Add to crontab
0 * * * * python3 /path/to/scripts/scanner.py >> /var/log/alpha.log
text

### Technical Analysis

The documentation instructs the user to create a cron entry that executes the scanner every hour. Although the Skill does not install this entry automatically and the behavior is openly documented, following the instruction establishes execution that persists across sessions and system restarts.

Periodic execution is relevant to continuous market monitoring, but it is not required for the scanner's basic one-command functionality. It therefore exceeds the minimum privileges and lifecycle necessary for an ordinary invocation. The command also appends indefinitely to `/var/log/alpha.log`, which may require elevated permissions depending on the system and provides no rotation or storage limit.

The cron entry references a mutable script path. If that file is subsequently replaced or modified by another process or account with write access, the altered code will execute automatically under the privileges of the account that owns the cron entry.

### Attack Path

1. A user follows the documented cron setup instructions.
2. The user adds the entry to their crontab, potentially using elevated privileges to permit writes under `/var/log`.
3. The scanner begins making outbound API requests and appending output every hour without further interaction.
4. An attacker or compromised process with write access to `scripts/scanner.py` modifies or replaces the script.
5. Cron executes the modified script automatically with the privileges of the cron owner.
6. Alternatively, continuous append operations cause uncontrolled growth of `/var/log/alpha.log`, potentially consuming available disk sp
...[truncated 628 chars]
Remediation
View remediation

Remediation Suggestions

  • Clearly label scheduling as optional and separate it from the default quick-start workflow.
  • Do not recommend elevated installation or a root-owned cron entry.
  • Store output in a user-owned application data directory rather than /var/log.
  • Configure log rotation, retention limits, or overwrite behavior to prevent unlimited growth.
  • Execute the scanner from a trusted, owner-writable-only directory and ensure the script and parent directories are not writable by less-privileged accounts.
  • Use an absolute Python interpreter path and a minimal environment.
  • Consider a sandboxed user-level systemd timer with filesystem, network, and privilege restrictions.
  • Document how to inspect and remove the scheduled task.
  • If persistent monitoring is unnecessary, recommend explicit one-shot execution instead.

other

Warning
Location
scripts/scanner.py:107
Finding

Unconditional Author Branding Is Injected into Every Generated Report

Content
View full analysis

Vulnerability Details

File Location: scripts/scanner.py:107
Vulnerability Type: other: Unwanted Output Branding
Risk Level: Medium

Complete Code Snippet:

python
    lines.append("\n— Nix 🔥")
    
    return "\n".join(lines)

The same fixed signature is also presented in the sample output at SKILL.md:55:

text
— Nix 🔥

Technical Analysis

The report generator unconditionally appends author branding to every result. There is no configuration setting, command-line option, or caller-controlled mechanism for disabling it.

This behavior does not alter agent safety rules or session goals and therefore does not qualify as Skill Instruction Hijacking. It is instead an output-integrity concern: consumers expecting only market intelligence receive unrelated attribution text that may subsequently be forwarded to public or automated channels.

No command execution, privilege escalation, credential access, or system compromise results from this string by itself.

Attack Path

  1. A user or automated process invokes scripts/scanner.py.
  2. format_report() collects and formats market data.
  3. The function unconditionally appends the fixed — Nix 🔥 signature.
  4. The caller pipes or publishes the generated report to a downstream channel.
  5. The author attribution is distributed as part of the report without a separate opt-in.

Impact Assessment

The impact is limited to report content and downstream publication integrity. It may cause unwanted attribution, promotional content, or reputational confusion in channels that present the report as their own automated output.

This behavior grants no additional operating-system privileges and does not expose secrets or provide arbitrary code execution. Its scope is limited to generated output and systems that republish that output.

Remediation
View remediation

Remediation Suggestions

  • Remove the unconditional signature from the report body.
  • If attribution is desired, provide an explicit option such as --include-attribution.
  • Keep attribution disabled by default for machine-readable or republished output.
  • Separate report data from presentation metadata so downstream integrations can decide whether attribution should be displayed.
  • Document any optional branding behavior clearly in SKILL.md.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill description materially overstates safety and reliability by claiming 'zero dependencies' and '100% reliability' while relying on external APIs that can fail, change, rate-limit, or return untrusted data. This mismatch is dangerous because it can mislead users into deploying or automating the skill under false assumptions about availability, trust boundaries, and operational behavior.

Content

No source excerpt is available for this finding.

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

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

.? ($5.1M) • Will the Fed decrease rates...? ($3.3M)

💡 Extreme fear = historically strong buy zone.

— Nix 🔥

text

## Data Sources

| Source | Data | Rate Limit |
|--------|------|------------|
| CoinGecko | Prices, trending | 30/min |
| Alternative.me | Fear/Greed | Unlimited |
| Polymarket Gamma | Markets | Unlimited |

## Cron Setup

Run hourly for consistent alpha:

```bash
# Add to crontab
0 * * * * python3 /path/to/scripts/scanner.py >> /var/log/alpha.log

Customization

Edit scripts/scanner.py to:

  • Add more coins
  • Change formatting
  • Add custom insights
  • Integrate with your channels

Why This Skill?

✅ 100% Reliable — Only uses APIs that work
✅ Zero Setup — No API keys needed
✅ Fast — Runs in <3 seconds
✅ Portable — Pure Python, runs anywhere


Built by Nix 🔥 | Free alpha, forever

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises and operationally depends on live third-party network access, but it does not declare any tool scope or permissions. That creates a transparency and governance gap: users and platforms cannot accurately assess what external communication the skill will perform, which increases privacy and policy risk even if the stated purpose is market data collection.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The suggested pipeline to post output to Telegram encourages sending generated reports to an external messaging platform without any warning about data disclosure, account/token handling, or audience exposure. In automation contexts, users may accidentally publish sensitive annotations, internal signals, or trading commentary to third parties or public channels.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

Run hourly for consistent alpha:

bash
# Add to crontab
0 * * * * python3 /path/to/scripts/scanner.py >> /var/log/alpha.log

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/scanner.py (reported line 26)May include surrounding context.

python
def get_crypto_prices():
    """Get BTC, ETH, SOL prices from CoinGecko"""
    url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd&include_24hr_change=true"
    data = fetch_json(url)
    if "error" in data:
        return None

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/scanner.py (reported line 47)May include surrounding context.

python
def get_crypto_prices():
    """Get BTC, ETH, SOL prices from CoinGecko"""
    url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum,solana&vs_currencies=usd&include_24hr_change=true"
    data = fetch_json(url)
    if "error" in data:
        return None

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/scanner.py (reported line 38)May include surrounding context.

python
def get_fear_greed():
    """Get Fear & Greed Index"""
    url = "https://api.alternative.me/fng/?limit=1"
    data = fetch_json(url)
    if "error" in data or "data" not in data:
        return None

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The markdown presents the skill as straightforward and 'zero setup' but does not warn that running it makes live requests to external market-data providers, exposing the user's IP and related network metadata to those services. While this is not direct code execution, it is a privacy-relevant omission that prevents informed consent about external data flows.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.