Back to skill

Security audit

Bank Reconciliation

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed bank reconciliation workflow, but users should protect the financial data and review any suggested accounting entries before acting on them.

Install dependencies in a dedicated virtual environment, consider pinning openpyxl, and verify the QBO client provenance and permissions. Treat the generated workbook and .cache/bank-reconciliation files as sensitive client financial data, and have a qualified reviewer approve any suggested adjusting entries before posting them.

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
SKILL.md:34
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis
``` ### Technical Analysis The documented installation command installs `openpyxl` without a pinned version, cryptographic hashes, a lockfile, or an explicitly trusted package source. Consequently, dependency resolution is mutable: different users or installation dates may retrieve different package versions and transitive dependencies. Although the audit found no evidence that `openpyxl` itself is malicious, this installation pattern creates a supply-chain exposure. A compromised package release, package index, dependency, or future incompatible version could introduce unauthorized behavior. Python package installation may execute package build logic, while the installed library will subsequently process sensitive bank statements and generate financial workbooks. The referenced QBO client is not included in the audited project, so its implementation, dependency integrity, credential handling, and network behavior could not be verified. ### Attack Path 1. A user follows the installation instructions and runs `pip install openpyxl`. 2. `pip` resolves the current package release and any required dependencies from its configured index without checking project-provided hashes or a lockfile. 3. An attacker compromises a resolved package release, dependency, package repository, or the user's configured package source. 4. Malicious code executes during package installation or when the reconciliation pipeline imports the affected component. 5. The code runs with the privileges of the user invoking `pip` or the pipeline and may access files, environment variables, bank statement data, generated workbooks, and any credentials available to that process. This path is ...[truncated 856 chars]
Remediation
View remediation
\ --hash=sha256: ``` 3. Install with hash enforcement: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` 4. Configure an explicitly trusted package index and prevent unintended resolution through user-controlled or untrusted indexes. 5. Prefer installation inside a dedicated virtual environment with only the permissions required to perform reconciliation. 6. Subject dependency updates to automated vulnerability scanning, review, and reproducible build checks before changing pinned versions. 7. Include the expected QBO client implementation in the auditable project, or document its exact repository, version, integrity digest, required permissions, and credential-storage behavior. 8. Ensure the reconciliation process receives only the minimum file and credential access necessary for its stated operation. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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 (3)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill documentation tells users to connect a QBO client and later discloses local caching of reconciliation snapshots, but it does not prominently warn that sensitive financial data will be accessed from QuickBooks Online and persisted on disk. This can lead to unintentional exposure of client financial information on shared machines or unmanaged environments because users may run the skill without understanding local data retention.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest explicitly says the skill is not for payroll reconciliation or AR/AP aging, but the documented behavior classifies unmatched bank items such as "payroll" and suggests entries to AR/Revenue. That introduces accounting capabilities outside narrow bank-to-QBO reconciliation and may steer users into unsupported workflows.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The manifest frames the skill as a bank reconciliation tool for matching balances and producing workpapers, not as a broader accounting adjustment assistant. Telling users to post adjusting entries based on the skill's output moves into operational bookkeeping guidance outside the explicitly declared scope.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.