Back to skill

Security audit

Budget & Expense Tracker

Security checks for vulnerabilities and agentic risk

Overview

This finance tracker is not malicious, but it needs review because it stores sensitive financial records and gives risky backup and activation instructions.

Install only if you are comfortable storing detailed financial records in workspace JSON files. Keep those files out of shared folders and repositories, avoid committing them to git unless you fully understand remotes and history retention, and require explicit confirmation before logging, exporting, changing budgets, or undoing records.

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

Warning
Location
SKILL.md:353
Finding

Sensitive Financial Records May Be Committed to Git

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:353
Vulnerability Type: Insecure storage and backup of sensitive financial data
Risk Level: Medium

Complete Code Snippet:

markdown
### Backup
Periodically remind users to back up their ledger. Offer to commit to git if workspace is a repo.

Technical Analysis

The Skill recommends committing the user's ledger to Git when the workspace is a repository. The ledger can contain sensitive personal financial information, including transaction dates, amounts, merchants, descriptions, payment methods, income, and savings activity.

Git commits create durable historical copies. Deleting the working-tree file later does not remove it from prior commits. The repository may also have a remote, collaborators, automated mirroring, or CI/CD services. Consequently, accepting this backup recommendation may cause financial data to leave the local machine despite the privacy claim elsewhere in the Skill that there is no cloud synchronization and that the user's financial data never leaves the machine.

This finding does not establish deliberate exfiltration or malicious behavior. It is an insecure data-handling recommendation that can facilitate accidental disclosure.

Attack Path

  1. The user records transactions in the local financial ledger.
  2. The Agent detects that the workspace is a Git repository and offers to commit the ledger as a backup.
  3. The user accepts, causing the sensitive ledger to enter Git history.
  4. The repository is pushed to an existing remote, mirrored automatically, shared with collaborators, or later made public.
  5. Anyone with repository access can retrieve the financial records, including from historical commits even if the current file is subsequently deleted.

Exploitation requires the ledger to be committed and the repository or its history to become accessible to an unintended party. The audited files do not independently perform ...[truncated 489 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove the default recommendation to use Git as a backup mechanism for financial records.
  2. Recommend an encrypted, access-controlled local backup or a user-selected encrypted backup destination instead.
  3. Add budget-profile.json, budget-ledger.json, budget-goals.json, budget-recurring.json, and generated CSV exports to .gitignore by default.
  4. If the user explicitly requests a Git commit, display a clear warning that Git retains historical copies and that remotes may disclose the data.
  5. Before any commit, inspect and disclose whether the repository has configured remotes or shared access, then require explicit user confirmation.
  6. Support encrypted or redacted exports that omit merchants, notes, payment methods, and other identifying fields.
  7. If sensitive files have already been committed, instruct the user to rotate any exposed secrets, rewrite repository history with an appropriate history-cleaning tool, force-update affected remotes where safe, and notify repository collaborators that old clones may still retain the records.
Vulnerability Patterns
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill does not prominently warn users up front that their financial data will be written into multiple workspace files. Because this is sensitive personal finance information, insufficient disclosure undermines informed consent and can lead users to expose data in shared workspaces, synced folders, or repos without realizing persistent artifacts are being created.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Triggering on any statement 'about money' is overly broad for a skill that writes to local financial ledgers. It risks silently interpreting ordinary conversation as commands and persisting inaccurate or sensitive data without clear user intent, which is especially dangerous in a finance context where correctness and consent matter.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

Several listed commands are generic everyday phrases, increasing the chance of accidental activation or collision with normal chat. In this skill, accidental activation can modify budgets, create goals, export financial history, or delete entries, so ambiguous command design has real integrity and privacy consequences.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill says financial data never leaves the machine, yet also instructs the agent to offer committing the ledger to git. In many real setups, git is connected to remote repositories or sync tooling, so this can lead to accidental publication or replication of highly sensitive financial records beyond the local device.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill promises that financial data stays local and that no external APIs are used, but its foreign-currency handling explicitly requires 'current rate' conversion. That creates a deceptive privacy boundary: users may disclose sensitive financial data believing it never leaves the machine, while an implementation may call an external exchange-rate service and transmit transaction context or metadata.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.