Back to skill

Security audit

Invoice Generator

Security checks for vulnerabilities and agentic risk

Overview

This invoice skill is purpose-aligned and disclosed, but users should treat saved invoices as sensitive local files.

Before installing, expect this skill to create local invoice files that may contain client names, addresses, amounts, payment terms, and payment-method details. Keep the invoices directory private, avoid storing full bank credentials or sensitive payment tokens, and ask the agent to confirm before saving or reusing business details in shared environments.

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:10
Finding
Persistent Plaintext Storage of Sensitive Business and Payment Information## Vulnerability Details **File Location**: `SKILL.md:10-16` and `SKILL.md:78-80` **Vulnerability Type**: Plaintext sensitive-data storage without defined access controls **Risk Level**: Medium **Relevant Skill Instructions (`SKILL.md:10-16`):** ```markdown 1. **Your business info:** Name, address, email, phone (save for reuse) 2. **Client info:** Company name, contact name, address 3. **Invoice number:** Or auto-generate (INV-YYYY-NNN format) 4. **Line items:** Description, quantity, unit price 5. **Payment terms:** Net 30, Net 15, Due on receipt, etc. 6. **Payment methods:** Bank transfer, PayPal, Stripe link, etc. 7. **Currency:** Default USD ``` **Persistence Requirements (`SKILL.md:78-80`):** ```markdown - Save invoices to an `invoices/` directory for record-keeping - If the user has sent invoices before, reuse their business details - Currency formatting: use proper symbols and decimal places ($1,234.56) ``` ### Technical Analysis The Skill instructs the Agent to collect business and client contact information, payment-method information, and invoice transaction details. It then requires invoices to be saved in an `invoices/` directory and directs the Agent to reuse previously supplied business details. These instructions establish persistent storage of potentially sensitive data but do not define: - Restrictive directory and file permissions - Encryption at rest - User consent before persistence or reuse - Data minimization or redaction of banking and payment details - Retention periods and secure deletion procedures - Protection against accidental repository commits, backups, or file sharing - Warnings that generated HTML or Markdown invoices may contain portable plaintext data Consequently, generated invoice files may expose names, addresses, email addresses, telephone numbers, client relationships, financial amounts, and bank-transfer or payment-account details to any user or process ca ...[truncated 1714 chars]
Remediation
## Remediation Suggestions 1. Require explicit user consent before saving invoices or retaining reusable business details. 2. Store the minimum information necessary and avoid retaining complete bank-account credentials, sensitive payment tokens, or unnecessary client data. 3. Redact payment details by default, retaining only safe references such as the last four digits or a user-approved payment identifier. 4. Create invoice directories and files with owner-only permissions where supported, such as directory mode `0700` and file mode `0600`. 5. Store generated invoices outside source repositories and add the invoice directory to ignore rules when repository use is possible. 6. Offer encryption at rest for retained invoices and protect encryption keys separately from the generated files. 7. Define configurable retention periods and provide commands for secure deletion of invoices and cached business profiles. 8. Warn users before generating portable HTML or Markdown documents containing sensitive payment information. 9. Separate reusable business-profile data from completed invoices and allow users to inspect, update, export, or delete the retained profile. 10. Clearly document that access to invoice history must be restricted to authorized users and processes.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The README states that the skill tracks invoice history and outstanding payments but does not disclose storage, retention, or handling of potentially sensitive financial and client data. Users may unknowingly provide billing records, client names, amounts, and payment status information without understanding persistence or privacy implications, which can lead to confidentiality and compliance risks.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The usage examples invoke the skill with very broad natural-language prompts and do not define clear boundaries for when the skill should act, what inputs are required, or what it must refuse. In an agent setting, underspecified triggers can cause accidental activation, processing of incomplete financial instructions, or generation of invoices from ambiguous user text, increasing the risk of financial mistakes or misuse.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The instruction to save invoices to an `invoices/` directory describes persistent file creation without warning, consent, or clarification of where data will be stored. Invoices commonly contain personal, financial, and contact information, so silent persistence can create privacy, retention, and local data exposure risks.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
Reusing previously supplied business details implies storage and retrieval of personal or business contact data without any privacy notice, consent model, or access controls. In shared environments or multi-user agents, this can leak one user's business identity and contact details into another session or output.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The quick command "Invoice [client] for [amount] for [description]" is broad enough that ordinary conversational text could accidentally activate the skill and cause invoice generation with sensitive billing data. In a tool that can create and save files, ambiguous activation increases the chance of unintended document creation or disclosure of previously stored business details.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The trigger "What's outstanding?" is extremely generic and could match normal conversation unrelated to invoices, causing the skill to list unpaid invoices or overdue client information unexpectedly. Because this action reveals financial status and client records, accidental activation can expose sensitive business data to the wrong context or user.

Static analysis

No suspicious patterns detected.