Back to skill

Security audit

beancount-property

Security checks for vulnerabilities and agentic risk

Overview

This skill needs review because it promises local bookkeeping but also directs the agent to access a connected online ledger.

Before installing, have the hosted-ledger fallback removed or require separate approval naming the online service, ledger, and allowed operations. Review each proposed entry and destination, and keep a ledger backup. The material concern is contradictory access scope, not evidence of intentional theft or destruction.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The supplied command implements a file-import workflow rather than property-specific transaction recording. Its mapping, parsing, and duplicate-handling options indicate an import capability outside the declared scope. The --no-input and --apply flags also perform a noninteractive write; although confirmation could exist elsewhere, none is shown in this chunk.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The supplied command implements a file-import workflow rather than the declared property-bookkeeping workflow. This is materially inconsistent with the explicit exclusion of statement-file importing. The --no-input option also disables interactive confirmation, although the isolated chunk cannot establish whether confirmation occurred earlier. The local ledger access itself is consistent with the description.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
86% confidence
Finding

A general price-refresh operation is not among the declared transaction-recording capabilities. Representing property as a priced lot does not itself imply refreshing market-price data. The snippet also shows no proposal or confirmation step, although prior confirmation elsewhere cannot be ruled out.

Content

No source excerpt is available for this finding.

The discovery workflow directs use of hosted-ledger MCP tools despite the manifest explicitly excluding Beancount.io-hosted ledgers.

Medium
Category
Excessive Agency
Confidence
99% confidence
Finding

The description excludes Beancount.io-hosted ledgers, but discovery explicitly directs the agent to use connected hosted-ledger MCP tools. This crosses the advertised local-only boundary and could cause sensitive financial queries or approved changes to reach a remote ledger without a separate scope decision; the confirmation requirements reduce write risk but do not resolve the routing contradiction.

Content

No source excerpt is available for this finding.

Hosted-ledger instructions contradict the manifest's explicit exclusion of Beancount.io ledgers.

Medium
Category
Excessive Agency
Confidence
98% confidence
Finding

The manifest limits this skill to local ledgers and explicitly says to skip ledgers hosted on Beancount.io. These instructions instead direct the agent to use the hosted server's tools, including for skills without a matching hosted prompt, and offer connecting the server or cloning the hosted ledger when disconnected.

Content

No source excerpt is available for this finding.

The skill provides a CSV statement-import workflow despite explicitly excluding bank and loan statement files.

Medium
Category
Excessive Agency
Confidence
98% confidence
Finding

The manifest delegates bank or loan statement files to beancount-import, but L37–L41 instruct importing a source CSV into an account, and L69–L77 provide the command to apply those imports to the ledger. This is a general cash-export ingestion workflow, not simply reading a mortgage payment split to construct a proposed property transaction; requiring approval does not resolve the scope mismatch.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.