Back to skill

Security audit

Ledger Transaction Entry

Security checks for vulnerabilities and agentic risk

Overview

This ledger skill is mostly purpose-aligned, but it gives the agent file-changing and shell-command instructions that are broader and less safely scoped than the description suggests.

Review before installing. Use it only in a ledger project where modifying projects/data, projects/reports, and possibly .gitignore is acceptable. Avoid letting the agent paste raw user text into a shell command; require safe argument passing or explicit quoting/validation before any write.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:49
Finding

Potential Shell Command Injection Through Unquoted Transaction Fields

Content
View full analysis
\ --amount \ --currency \ --description \ --tag ``` ### Technical Analysis The skill instructs the Agent to extract transaction fields from natural-language user input and substitute them into a shell command. Although `CURRENT_DATE` is quoted, user-controlled values such as the description, tag, currency, direction, and amount are represented without quoting or an explicit requirement to use a shell-free argument-array interface. If the Agent performs direct textual substitution, shell metacharacters embedded in a field can be interpreted by the command shell rather than passed as literal argument data. Relevant metacharacters include command separators, command substitutions, redirection operators, pipelines, and variable expansions. The fields with the highest exposure are `description`, `tag`, and optional textual arguments because they may legitimately contain spaces and arbitrary text. The document does not prescribe strict validation for these values or require safe process invocation. Exploitability therefore depends on how the Agent executes the documented command, but the supplied pattern permits command injection when values are interpolated into a shell command. ### Attack Path 1. An attacker submits a transaction statement containing shell syntax in a user-controlled field, such as the description or tag. 2. The Agent extracts that content as a ledger field. 3. The Agent substitutes the value directly into the documented command without safe argument separation or shell quoting. 4. The command is passed to a shell. 5. The shell parses the inject ...[truncated 974 chars]
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (5)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger description uses broad, everyday phrases such as general transaction statements and bookkeeping requests without tight boundaries, making accidental or overly broad activation more likely. For a skill that writes files and may perform other filesystem actions, ambiguous triggering increases the chance of unintended execution on ordinary conversation content.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill description says it appends transactions into projects/data, but it does not clearly disclose that the skill writes local files and elsewhere also supports generating and deleting local report files. Users and reviewers may therefore underestimate the level of filesystem access and side effects, undermining informed consent and safe deployment.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest and top-level description frame this as a simple transaction-entry skill, but the instructions expand scope to reading all monthly data, generating reports, modifying .gitignore behavior, and deleting generated files. This mismatch can cause the skill to be invoked in contexts where users or reviewers do not expect broader filesystem actions, increasing the risk of unintended data access or file manipulation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

Managing .gitignore or repository ignore patterns is unrelated to the narrow task of appending ledger entries and introduces repository-level side effects. An overprivileged skill that can alter ignore rules may hide generated artifacts or other files from normal review workflows, which is risky even if the immediate stated purpose is benign.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill defaults the date to 'today (Asia/Taipei)' and later instructs the command to get today's date in the Asia/Taipei timezone. This hard-codes a locale-specific behavior without indicating user choice or documenting why that locale is required.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.