Back to skill

Security audit

trustlog

Security checks for vulnerabilities and agentic risk

Overview

The skill is useful and mostly transparent, but it tells agents to run an unpinned third-party npm CLI and includes an upload workflow that can send local receipt contents to an external service.

Install only if you are comfortable with agents running the Trustlog npm CLI in your project. Prefer a pinned or lockfile-managed version, run it with minimal environment secrets, inspect receipts before sharing, and treat Vaultline upload as an explicit external publication step.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T08 · Insecure Dependencies

Error
Location
SKILL.md:14
Finding

Unpinned npm Package Is Downloaded and Executed Through npx

Content
View full analysis
[args...] npx @builtbyecho/trustlog summarize .trustlog/latest.json npx @builtbyecho/trustlog verify .trustlog/latest.json ``` ### Technical Analysis The instructions invoke `@builtbyecho/trustlog` through `npx` without specifying an exact package version, lockfile, or integrity hash. Depending on the local npm configuration and cache state, `npx` can retrieve the current package release from the npm registry and immediately execute it. Consequently, the code executed by the Skill can change after the Skill itself has been audited. If the package, one of its transitive dependencies, or its publisher account is compromised, a malicious release could execute with the same operating-system privileges and environment access as the agent. The wrapper also runs in the target project root. This gives the downloaded package an opportunity to inspect project files, environment variables, configuration files, generated receipts, and command arguments before or while launching the requested test or build command. ### Attack Path 1. An attacker compromises the npm publisher account, package, or a transitive dependency associated with `@builtbyecho/trustlog`. 2. The attacker publishes a malicious release under the expected package name. 3. An agent follows `SKILL.md` and runs the unversioned `npx @builtbyecho/trustlog` command. 4. `npx` retrieves and executes the malicious package release. 5. The package reads accessible source files, credentials, environment variables, or command output, and may modify files or transmit ...[truncated 767 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:57
Finding

Receipt Upload Can Disclose Sensitive Local Information to an External Service

Content
View full analysis
console.log("Vaultline fileId:", r.fileId)); ' ``` ### Technical Analysis The integration reads the complete `.trustlog/latest.md` file and submits it to an external Vaultline service. The upload code does not perform content validation, enforce secret scanning, apply an allowlist-based redaction policy, or request explicit confirmation for the exact payload immediately before transmission. The Skill states that receipts redact common secrets and should be inspected before publication. However, heuristic redaction cannot reliably identify every credential, private path, proprietary source fragment, command argument, or sensitive command output. The code does not technically enforce the stated manual-inspection requirement. The upload is optional and intended for cross-agent sharing, so external transmission is consistent with the described feature. The security issue is that the provided implementation can transmit the entire local receipt without a mandatory review or validation gate. ### Attack Path 1. A wrapped command emits sensitive data into its output, command line, change summary, or error message. 2. Trustlog records that information in `.trustlog/latest.md`. 3. The redaction mechanism does not recognize the particular secret or sensitive value. 4. An agent follows the Vaultline integration instructions without thoroughly reviewing the complete re ...[truncated 936 chars]
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (9)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The invocation description is broad enough to match common requests for summaries, proof, or handoffs, which may cause the skill to be applied in more situations than necessary. In context, that increases exposure to the unpinned package execution and optional upload behaviors documented later in the skill.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

Using npx @builtbyecho/trustlog without a pinned version causes the latest package version to be fetched and executed at runtime, creating a supply-chain execution risk. If the package is compromised, unpublished/replaced, or a malicious version is released, the agent may run attacker-controlled code in the local environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

This command invokes an unpinned package through npx, which can download and execute whatever version is current at the time of use. That creates a direct remote code execution and supply-chain risk in the agent's environment.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

Even for verification, invoking an unpinned npx package means the verification step itself depends on untrusted code fetched at execution time. A compromised package could falsify verification results or execute arbitrary code while appearing to perform a safety check.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The documented run command uses an unpinned npx package, so routine use of the skill repeatedly exposes users to package substitution or malicious upstream updates. Because this wrapper is meant to capture command execution, compromise could affect both command behavior and the generated audit artifact.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The summarize command also fetches and runs an unpinned package version, which weakens trust in the generated human-readable receipt summary. An attacker controlling the package supply chain could alter or redact evidence presented to reviewers.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

An unpinned verification command undermines the trustworthiness of the verification process itself because the verifier code may change between runs or be replaced maliciously. This is especially risky in a skill centered on producing auditable proof.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is described as local-first receipt creation and verification, but it later instructs users to upload receipts to Vaultline. That changes the data-flow from local-only evidence handling to external transmission, increasing the risk of unintended disclosure of commands, file paths, change summaries, or incompletely redacted sensitive content.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The documentation includes executable code that uploads receipt content to a network service, which is not necessary for the core stated purpose of generating local receipts. Because receipts may contain operational metadata and redaction is explicitly imperfect, this creates a clear confidentiality risk if agents or users follow the example without careful review.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.