Back to skill

Security audit

toll

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to do what it says, but its install instructions ask users to run an unverified remote installer, which warrants review before installing.

Review the installer source before running it, prefer a pinned release or `cargo install toll --version 1.0.5` if available, and remember the tool is intended to read local Claude Code and Codex CLI session logs to calculate usage and costs.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:24
Finding

Mutable Remote Installation Script Executed Directly Through a Shell

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 24
Vulnerability Type: Remote payload retrieval and execution
Risk Level: High

Vulnerable Code:

bash
# Quick install (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/Fullstop000/toll/refs/heads/master/install.sh | sh

Technical Analysis

The installation instructions download a shell script from the mutable master branch of a personal GitHub repository and immediately pipe it to sh. The command does not pin a commit or release, verify a cryptographic signature or checksum, or allow the user to inspect the downloaded content before execution.

Consequently, the effective code executed by this Skill can change after the Skill itself has been reviewed. Compromise of the repository, maintainer account, GitHub delivery path, or referenced installation script could turn the documented installation command into an arbitrary code-execution channel.

Installing the utility may be necessary for the declared token-reporting functionality, but executing a mutable remote script is not the minimum privilege or minimum-risk installation mechanism required. A pinned and verified package or release artifact would provide the required functionality without blindly executing remotely controlled shell code.

Attack Path

  1. A user invokes the Skill on a system where toll is not installed.
  2. The Skill runs or recommends running toll --version, which fails.
  3. The user follows the documented quick-install command.
  4. curl retrieves the current contents of install.sh from the mutable master branch.
  5. The response is passed directly to sh without inspection or integrity verification.
  6. If the repository or delivery source has been compromised, attacker-controlled commands execute with the privileges of the invoking user.

Impact Assessment

A malicious installation script could execute arbitrary commands with the current use ...[truncated 462 chars]

Remediation
View remediation

Remediation Suggestions

  • Remove the curl | sh installation pattern.
  • Prefer a trusted package manager or a versioned release artifact.
  • Pin installation to an immutable release version or commit rather than master.
  • Publish cryptographic checksums or signatures through a separately authenticated channel and verify them before execution.
  • Download the installer to a local file, verify it, and permit inspection before running it.
  • Do not invoke installation automatically. Require explicit user approval after clearly identifying the source and requested actions.
  • Document the files, directories, and permissions modified by installation.
  • Prefer an installation command similar to:
    bash
    curl -fL -o toll.tar.gz https://example.invalid/releases/download/v1.0.5/toll.tar.gz
    echo "<expected-sha256>  toll.tar.gz" | sha256sum -c -
    
    The actual release URL and checksum must come from a trusted, immutable release process.

T08 · Insecure Dependencies

Warning
Location
SKILL.md:27
Finding

Unpinned Cargo Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 27
Vulnerability Type: Insecure dependency installation
Risk Level: Medium

Vulnerable Code:

bash
# Or via cargo
cargo install toll

Technical Analysis

The Cargo installation alternative does not specify an exact package version or a locked dependency resolution. It therefore installs whichever release is current when the command is run rather than the Skill’s declared version 1.0.5.

This creates supply-chain drift: later package releases and their transitive build dependencies may differ from what was reviewed when the Skill was published. Cargo packages can execute compilation-related code during installation, including build scripts, so a compromised future release or dependency could execute code under the installing user’s account.

No evidence in the audited file establishes that the current toll Cargo package is malicious. The confirmed weakness is the absence of version pinning and integrity controls, which prevents reproducible installation and expands trust to future package versions.

Attack Path

  1. A user invokes the Skill without toll installed.
  2. The user selects the documented Cargo installation method.
  3. Cargo resolves the package name to the registry’s current release and resolves its dependency graph at installation time.
  4. If a future package release, maintainer account, or transitive dependency is compromised, Cargo downloads and builds the affected content.
  5. Malicious build-time or installed code executes with the privileges of the invoking user.

Impact Assessment

Exploitation could permit arbitrary code execution as the installing user during compilation or later when the installed toll binary is invoked. Accessible data could include user files, development credentials, environment variables, and the Claude Code or Codex logs the tool is expected to process. The instruction does not establish ...[truncated 47 chars]

Remediation
View remediation

Remediation Suggestions

  • Pin the package to the Skill’s reviewed version:
    bash
    cargo install toll --version 1.0.5
    
  • Confirm that the registry package is controlled by the expected project maintainer and corresponds to the linked source repository.
  • Use locked dependency resolution where the project’s supported installation workflow permits it.
  • Publish and verify reproducible release artifacts, checksums, or signatures.
  • Review dependencies and Cargo build scripts before recommending installation.
  • Update the pinned version only after reviewing the new release and its dependency changes.
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (2)

Chaining Abuse

High
Category
Tool Misuse
Confidence
99% confidence
Finding

The | sh construct causes arbitrary remote content to be executed immediately in the user's shell. In a skill context, this is especially dangerous because the agent may encourage or automate command execution, increasing the chance that unreviewed code runs with the user's privileges.

Content

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

bash
# Quick install (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/Fullstop000/toll/refs/heads/master/install.sh | sh

# Or via cargo
cargo install toll

External Script Fetching

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The skill instructs users to install the tool by piping a remotely fetched script directly into sh. This bypasses review of the downloaded content, trusts the current contents of a mutable remote branch (master), and creates a supply-chain risk if the repository, network path, or hosting account is compromised.

Content

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

bash
# Quick install (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/Fullstop000/toll/refs/heads/master/install.sh | sh

# Or via cargo
cargo install toll

Static analysis

No suspicious patterns detected.