Back to skill

Security audit

ProofTrail MCP Skill

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent ProofTrail MCP install guide, but it tells users to run an unpinned external repository as a local MCP server.

Review the ProofTrail repository before installing, pin it to a trusted commit, run pnpm with normal supply-chain precautions, and avoid passing unrelated credentials or broad filesystem access to the MCP process.

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/INSTALL.md:3
Finding
Unpinned Remote Repository Installation and Script Execution## Vulnerability Details **File Location**: `references/INSTALL.md:3-14`; also referenced by `SKILL.md:75-79` **Vulnerability Type**: Unpinned third-party repository and dependency execution **Risk Level**: Medium ### Vulnerable Code `references/INSTALL.md:3-14`: ```bash ## Local repo setup ```bash git clone https://github.com/xiaojiou176-open/prooftrail.git cd prooftrail pnpm install ``` ## Start the current repo-native MCP server ```bash pnpm mcp:start ``` ``` `SKILL.md:75-79`: ```markdown 1. clone the ProofTrail repo 2. run `pnpm install` 3. point your MCP client at the repo-local stdio command 4. start the MCP bridge with `pnpm mcp:start` ``` ### Technical Analysis The installation procedure clones the mutable default branch of an external GitHub repository and immediately runs `pnpm install` followed by a repository-defined package script. It does not pin the checkout to a reviewed commit hash or signed release, verify an integrity checksum, require a frozen lockfile, or direct the user to inspect package lifecycle scripts. A pnpm installation can execute package lifecycle scripts, while `pnpm mcp:start` executes the command currently defined by the downloaded repository. The effective code executed by users can therefore change after this Skill has been reviewed. The MCP host configurations also attach that downloaded process to an Agent environment, which may grant it access to inherited environment variables, local files available to the process, network resources, and optional backend credentials. This audit covered only the documentation Skill package and did not contain the external ProofTrail repository's source code. Therefore, no malicious behavior in that repository is asserted; the vulnerability is the absence of controls ensuring that future downloaded code is identical to reviewed code. ### Attack Path 1. An attacker compromises the referenced repository, a maintainer acc ...[truncated 1646 chars]
Remediation
## Remediation Suggestions 1. Pin the repository checkout to a reviewed immutable commit: ```bash git clone https://github.com/xiaojiou176-open/prooftrail.git cd prooftrail git checkout --detach <reviewed-full-commit-hash> ``` 2. Prefer a cryptographically signed release tag and document how users must verify its signature before installation. 3. Publish and verify checksums for release artifacts where applicable. 4. Commit and review `pnpm-lock.yaml`, then require: ```bash pnpm install --frozen-lockfile ``` 5. Review package lifecycle scripts and the exact `mcp:start` definition before execution. Where supported, initially install with lifecycle scripts disabled and explicitly approve only required build steps. 6. Run the MCP server in a sandbox or container with: - A dedicated unprivileged account. - A read-only or narrowly scoped filesystem. - No unnecessary host-directory mounts. - An allowlisted network policy. - Only explicitly required environment variables. 7. Do not pass unrelated credentials or the complete host environment to the MCP process. Store optional backend tokens in a scoped secret mechanism and rotate them if exposure is suspected. 8. Record the reviewed repository commit in both host configuration examples so that operators can verify the configured checkout before launching the server.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

Vague Triggers

Medium
Confidence
90% confidence
Finding
The manifest trigger list includes "browser evidence" without narrowing context, product scope, or exclusion conditions. This phrase could match ordinary discussion about browser logs or evidence collection and may cause unintended skill invocation.

Vague Triggers

Medium
Confidence
83% confidence
Finding
"Governed recovery" does not clearly identify the product, tool, or exact activation context for this skill. Without additional scope limits or negative examples, the trigger may be interpreted broadly across unrelated recovery workflows.

Static analysis

No suspicious patterns detected.