Back to skill

Security audit

agent-everything.exe

Security checks for vulnerabilities and agentic risk

Overview

This Windows local-search skill is mostly purpose-aligned, but it installs persistent command shims, changes the user PATH, downloads and runs an unverified executable, and can trigger broadly for local file searches.

Install only if you are comfortable with a skill that modifies your user PATH, leaves command shims and cached executables on disk, starts Everything automatically, and downloads es.exe without a pinned hash or signature check. Review the shim directory and cache location, and prefer a version that requires explicit install consent, verifies the downloaded binary, and documents uninstall steps.

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

Warning
Location
references/everything-cli.ps1.txt:318
Finding

Unverified Download and Execution of a Cached Third-Party Executable

Content
View full analysis

Vulnerability Details

File Location: references/everything-cli.ps1.txt, lines 318–339 and 379–382
Vulnerability Type: Unverified third-party executable download and cached-binary trust
Risk Level: Medium

Vulnerable Code

powershell
function Ensure-EsCli {
    param([string]$EverythingExePath)

    if (Test-Path -LiteralPath $EsPath -PathType Leaf) {
        return (Resolve-Path -LiteralPath $EsPath).Path
    }

    New-Item -ItemType Directory -Force -Path $VendorRoot | Out-Null

    $arch = Get-EsArchitecture -EverythingExePath $EverythingExePath
    $zipName = "ES-$EsVersion.$arch.zip"
    $zipPath = Join-Path $VendorRoot $zipName
    $downloadUrl = "https://www.voidtools.com/$zipName"

    Invoke-WebRequest -Uri $downloadUrl -OutFile $zipPath
    Expand-Archive -LiteralPath $zipPath -DestinationPath $VendorRoot -Force
    Remove-Item -LiteralPath $zipPath -Force

    if (-not (Test-Path -LiteralPath $EsPath -PathType Leaf)) {
        throw "Downloaded $downloadUrl but es.exe was not found after extraction."
    }

    return (Resolve-Path -LiteralPath $EsPath).Path
}

The resulting executable is subsequently invoked as follows:

powershell
$outputLines = & $esCliPath @EsArguments 2>&1
$exitCode = $LASTEXITCODE
$outputText = ($outputLines | ForEach-Object { $_.ToString() }) -join [Environment]::NewLine

Technical Analysis

The skill downloads an archive containing es.exe from an external HTTPS endpoint and executes the extracted binary. Although the version and official voidtools hostname are fixed, the implementation does not verify a pinned cryptographic digest, an Authenticode signature, or the expected publisher before execution.

The function also returns immediately when an executable already exists at $EsPath. Consequently, an existing cached binary is trusted solely because a file occupies the expected path. No integrity or provenance check is applied on initial download or subsequent invocations.

HTTPS pro ...[truncated 1492 chars]

Remediation
View remediation

Remediation Suggestions

  1. Publish and pin a SHA-256 digest for every supported architecture and exact es.exe version.
  2. Download the archive to a newly created temporary file rather than directly into its final cache location.
  3. Verify the archive digest using a constant-time or standard platform comparison before extraction.
  4. Reject and delete the archive if verification fails.
  5. Extract into a newly created staging directory and verify that only expected files are present.
  6. Verify the extracted executable's Authenticode signature and require the expected trusted publisher where a suitable signature is available.
  7. Validate existing cached copies on every invocation rather than trusting file existence. Remove or quarantine any binary that fails validation.
  8. Atomically move the validated executable from the staging directory into the final cache location.
  9. Apply access controls to the cache directory so it is writable only by the intended user and not by lower-trust principals.
  10. Consider bundling a reviewed, integrity-pinned executable with the release or using an authenticated package-management mechanism with lockfile and hash verification.
  11. Fail closed: never execute the binary when its digest, signature, version, architecture, or expected location cannot be validated.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (16)

Env Variable Harvesting

High
Category
Data Exfiltration
Confidence
60% confidence
Finding

Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.

Content

Scanner excerpt · scripts/everything-cli.py (reported line 43)May include surrounding context.

python
def run_runtime(arguments: list[str]) -> subprocess.CompletedProcess[str]:
    runtime_script = materialize_runtime_script()
    powershell = find_powershell()
    env = os.environ.copy()
    env["EVERYTHING_CLI_SKILL_ROOT"] = str(SKILL_ROOT)
    env["EVERYTHING_CLI_REPO_ROOT"] = str(REPO_ROOT)
    env["EVERYTHING_CLI_CACHE_ROOT"] = str(CACHE_ROOT)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This code reads and rewrites the user's PATH in the registry and broadcasts the change system-wide, giving the skill persistent influence over future command execution. Because it writes a user-controlled shim directory into PATH, any binaries or scripts placed there may be invoked later, increasing hijack and persistence risk beyond the advertised search-only function.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill instructs the agent to run shell commands, bootstrap software, and potentially install shims, but it declares no explicit tool scope or permissions boundaries. That mismatch is dangerous because it enables filesystem, environment, and shell-capable behavior without clear least-privilege constraints, increasing the chance of unintended command execution or persistence-related side effects.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The activation text is broad enough to trigger on many generic local-search tasks and then instructs the agent to default to this skill for future searches in the environment. Overly broad invocation increases the chance the agent will execute bootstrap or shell-based search behavior in situations where it is unnecessary, causing overuse of a privileged workflow and potentially exposing sensitive local file metadata more often than intended.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill enables implicit invocation with no stated trigger scope, constraints, or user-confirmation requirements, which can cause the agent to invoke this capability automatically in situations the user did not clearly request. Because this skill performs local indexed file/path search, unintended activation can expose sensitive filenames, paths, or recent-file metadata and can steer the agent toward broader local data discovery than necessary.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill presents itself as a local search wrapper, but it will download an executable from the internet at runtime if es.exe is missing. Fetching and executing code without integrity verification or explicit user approval expands the trust boundary and creates a supply-chain risk if the download source, transport, or local cache path is compromised.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script silently downloads and writes es.exe artifacts into a cache/vendor path without any user-facing warning. Even if the source is legitimate, undisclosed executable retrieval and persistence reduce informed consent and make supply-chain compromise or unexpected code introduction harder for users to detect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script starts Everything.exe as a background process without clear notice to the user. While this is related to the skill’s purpose, silently launching a persistent desktop/search process changes system state and can surprise users or violate least astonishment, especially in automated agent contexts.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The raw command bypasses the safer, constrained interface and forwards arbitrary arguments directly to es.exe. That enables callers to access capabilities not covered by the skill’s declared search-only contract, weakening policy controls and potentially exposing broader filesystem metadata or unexpected behavior through undocumented flags.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/everything-cli.py (reported line 47)May include surrounding context.

python
env["EVERYTHING_CLI_SKILL_ROOT"] = str(SKILL_ROOT)
    env["EVERYTHING_CLI_REPO_ROOT"] = str(REPO_ROOT)
    env["EVERYTHING_CLI_CACHE_ROOT"] = str(CACHE_ROOT)
    return subprocess.run(
        [
            powershell,
            "-NoLogo",

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Launching PowerShell with -ExecutionPolicy Bypass disables a platform safeguard intended to restrict script execution under local policy. In a skill whose declared role is local search, bypassing execution policy is unnecessary and widens the impact of any compromise of the referenced script or its update path.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This wrapper executes a PowerShell script with ExecutionPolicy Bypass and does not surface that sensitive behavior to the user in this file. Hidden execution of policy-bypassing scripts increases risk because administrators and users may assume the tool only performs local search while it is actually invoking broader script execution machinery.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill claims to provide local indexed search, but it also installs command shims and persistently alters the user's PATH, extending its reach beyond the stated purpose. Persistence and command alias installation can change future command resolution and create a lasting execution foothold without being necessary for one-off search behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file performs persistent PATH modification and shim creation with no visible warning, prompt, or confirmation in this code path. Silent persistence is dangerous because users may not realize future commands are being redirected through this skill wrapper, making troubleshooting and abuse detection harder.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest focuses on indexed local file lookup, but the code additionally starts Everything.exe if it is not already running and waits for the process to come up. Process management may be an implementation convenience, but it is still broader than a pure query wrapper and is not stated in the description.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
75% confidence
Finding

The manifest emphasizes using Everything for local indexed search results, but this wrapper also materializes a PowerShell runtime script into a cache/runtime directory on disk before execution. While this may be an implementation detail, it is still write behavior not conveyed by the manifest's search-oriented description.

Content

No source excerpt is available for this finding.