Back to skill

Security audit

Gas Fee Tracker

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward gas fee tracker that queries public blockchain RPC endpoints and optionally writes a user-selected log file.

Install and run it in a virtual environment if possible, and consider pinning requests before use. Be aware that running the script contacts public RPC endpoints and that --log appends gas snapshots to the file path you provide.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Note
Location
README.md:25
Finding
Unpinned Third-Party Dependency Installation## Vulnerability Details **File Location**: `README.md`, lines 25-27 **Vulnerability Type**: Unpinned third-party dependency **Risk Level**: Low ```text pip install requests ``` ### Technical Analysis The installation command retrieves the latest available version of `requests` and its transitive dependencies without a version constraint, lockfile, or package hash verification. Consequently, the dependency set can change after the project has been reviewed. This is a supply-chain hardening weakness rather than evidence that the current `requests` package is malicious. If a future dependency release or package-distribution account were compromised, users following this instruction could install attacker-controlled code. Unpinned versions can also introduce incompatible changes that alter or break the Skill's behavior. ### Attack Path 1. An attacker compromises a relevant package release or its distribution account. 2. The attacker publishes a malicious release that satisfies the unconstrained installation command. 3. A user follows the README and runs `pip install requests`. 4. `pip` resolves and installs the compromised package or transitive dependency. 5. Malicious code executes during package installation or when the package is imported by `scripts/gas_tracker.py`. This path depends on an upstream supply-chain compromise; the audited project does not itself retrieve or execute a remote code payload. ### Impact Assessment Malicious dependency code would generally execute with the privileges of the user running `pip` or launching the Skill. It could access files and credentials available to that account, make network requests, modify user-writable data, or execute additional processes. The scope could be greater if installation is performed with elevated privileges. No direct privilege-escalation mechanism is present in the audited project.
Remediation
## Remediation Suggestions - Add a reviewed dependency file that pins `requests` and all transitive dependencies to exact versions. - Generate and verify cryptographic hashes, for example with `pip-compile --generate-hashes`. - Install with hash enforcement: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` - Recommend installation inside a dedicated virtual environment rather than into the system Python environment. - Use automated dependency scanning and controlled update reviews to keep pinned versions secure without silently accepting new releases.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

Lp3

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding
The skill documentation describes capabilities that perform network access to public RPC endpoints and optional file writes to a JSONL log, but the manifest does not declare any explicit tool scope such as permissions or allowed-tools. This creates a least-privilege and review gap: an operator may approve or run the skill without clear visibility into its external communication and local write behavior, making misuse or later code changes harder to govern.

External Transmission

Medium
Category
Data Exfiltration
Content
def fetch_gas_price_gwei(rpc_url: str, timeout=10) -> float:
    resp = requests.post(
        rpc_url,
        json={"jsonrpc": "2.0", "method": "eth_gasPrice", "params": [], "id": 1},
        timeout=timeout,
Confidence
80% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

No suspicious patterns detected.