Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to InvoiceShelf
-
ExploitCraft invoice/estimate creation API request
-
ExecutionSubmit mismatched total/due_amount fields
-
ImpactPersist falsified financial totals
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Access control enforcement
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a valid authenticated InvoiceShelf account (PR:L) with access to the invoice, estimate, or recurring-invoice creation paths; the attacker sends client-supplied total, sub_total, tax, discount_val, and due_amount values that the pre-2.4.0 request handlers (InvoicesRequest::getInvoicePayload, EstimatesRequest, RecurringInvoiceRequest) accept without validating against line items. No special feature flag or non-default configuration is needed - default configurations of all versions prior to 2.4.0 are affected. Exploitation is limited strictly by the authentication requirement: an attacker must already possess credentials and document-creation permissions, so impact is bounded to what that user is allowed to create, and the recurring-invoice path is more impactful because tampered template totals propagate to every generated invoice. |
| Impact | This is a genuine but low-severity business-logic flaw, not a high-priority emergency. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N) scores 5.3 (Medium) and is internally consistent with the description: network-reachable web API, low attack complexity, and crucially PR:L meaning a valid authenticated account is required - this is privilege abuse by a legitimate user, not remote unauthenticated compromise. The only impact is a limited integrity violation (VI:L): stored financial totals can be made to disagree with line items. There is no confidentiality or availability impact, no EPSS score provided, no CISA KEV listing, and no public POC - so all exploitation-probability signals are either absent or point to low real-world risk. The signals do not conflict on severity; they converge on 'real but minor.' The one metadata conflict worth flagging is the 'Authentication Bypass' tag, which contradicts both the CWE-284 (Improper Access Control) classification and the description - nothing in the data indicates authentication is bypassed; an attacker must already be authenticated. Real-world priority is low-to-moderate: patch in the normal cycle, prioritize only in multi-tenant or billing-sensitive deployments where total manipulation has financial/fraud consequences. |
| Exploit ScenarioDerived | An authenticated InvoiceShelf user with invoice-creation rights submits a crafted API request where the total, sub_total, tax, or due_amount fields are set to values that do not match the submitted line items (e.g. line items worth $1,000 but a due_amount of $10). The server persists these attacker-controlled totals verbatim, producing a stored invoice, estimate, or recurring-invoice template whose displayed/charged amount diverges from its itemized contents. No public exploit code is identified, but the manipulation requires only ordinary API calls. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Authenticated users of InvoiceShelf can persist falsified financial figures on invoices, estimates, and recurring-invoice templates because versions prior to 2.4.0 trust client-supplied total, sub_total, tax, discount_val, and due_amount values instead of recomputing them from the line items. The result is stored documents whose totals disagree with their own item prices and quantities, an integrity-only business-logic flaw (CVSS 4.0 5.3, CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N) that requires a valid account with permission to create documents, so the blast radius is bounded by what that user is already authorised to create. The recurring-invoice path is the most consequential because a tampered template total propagates into every invoice generated from it. Exploitation is trivial but low-impact, no public exploit code has been identified at time of analysis, it is not listed in CISA KEV, and a vendor fix is available in version 2.4.0.
RemediationAI
Vendor-released patch: upgrade InvoiceShelf to version 2.4.0, which recomputes document totals server-side from line items via the new DocumentTotals helper in the invoice, estimate and recurring-invoice request handlers; the release is at https://github.com/InvoiceShelf/InvoiceShelf/releases/tag/2.4.0 and the underlying fix is commit 107a951126b606880a8f4838a88cdff707ee619b / PR https://github.com/InvoiceShelf/InvoiceShelf/pull/665, with details in advisory https://github.com/InvoiceShelf/InvoiceShelf/security/advisories/GHSA-8c69-ch98-87r6. Because the vulnerability is a missing server-side validation rather than a toggleable feature, there is no configuration flag that disables the vulnerable behaviour in pre-2.4.0 releases, so the only true fix is upgrading. If upgrading cannot be done immediately, apply compensating controls with their trade-offs in mind: first, tighten role and permission assignments so only a small set of trusted users can create or edit invoices, estimates and recurring-invoice templates (this reduces the pool of abusable accounts but does not stop an insider or a compromised low-privilege session); second, treat pre-patch stored financial data as untrusted and run reconciliation queries or exports that compare each document's stored total, sub_total, tax, due_amount and base_* fields against the sum of its line items' price times quantity plus applicable taxes and discounts, flagging mismatches for manual correction (this detects manipulation after the fact but produces false positives where legitimate rounding or historical data-entry differences exist); third, review recurring-invoice templates specifically, since tampered template totals silently propagate into every newly generated invoice and may already have produced a chain of incorrect documents requiring bulk correction; and fourth, if the deployment is internet-facing, restrict access to the document-creation endpoints to trusted networks or require stronger authentication for the accounts that hold creation permissions (this narrows exposure but does not remediate the underlying logic flaw).
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
InvoiceShelf is a Laravel-based PHP invoicing and expense-tracking application, and the vulnerable code lives in its form-request layer: InvoicesRequest::getInvoicePayload(), EstimatesRequest::getEstimatePayload() and RecurringInvoiceRequest::getRecurringInvoicePayload() assemble the array that is persisted to the database. Before 2.4.0 those methods copied monetary fields straight from the HTTP request body - total, sub_total, tax, discount_val, due_amount and their exchange-rate-derived counterparts base_total, base_sub_total, base_tax and base_due_amount - while only reading tax_per_item and discount_per_item from CompanySetting. Nothing reconciled those numbers against the submitted items and taxes arrays, creating a trust-boundary failure between the client and the server's accounting model; this is the root cause classified as CWE-284 (Improper Access Control) and reflected in the advisory's 'Authentication Bypass' tagging, though the practical effect is unauthorised modification of stored financial data rather than privilege escalation. The fix commit 107a951126b606880a8f4838a88cdff707ee619b introduces an App\Support\DocumentTotals::compute() helper that derives sub_total, total and tax server-side from the line items, the applied taxes, discount_val, the tax_per_item/discount_per_item company settings and the tax_included flag, then multiplies those authoritative values by the exchange rate for the base_* fields and sets due_amount equal to the recomputed total. Because InvoiceShelf is a self-hosted, multi-tenant-style application where each company's settings drive tax and discount behaviour, the flaw affects default configurations with no special feature flag required; no CPE identifiers were supplied in the intelligence feed, so affected scope is defined solely by the InvoiceShelf product and the pre-2.4.0 version range.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Network web API with low complexity, but requires an authenticated account (PR:L); impact is a limited integrity violation of stored totals (I:L) with no confidentiality or availability effect.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
InvoiceShelf is an open-source web & mobile app that helps track expenses, payments and create professional invoices and estimates. Prior to version 2.4.0, InvoiceShelf invoice, estimate, and recurring-invoice creation paths accept client-supplied total, sub_total, tax, discount_val, and due_amount values without verifying that they match the submitted line items. An authenticated user can persist manipulated financial totals through InvoicesRequest::getInvoicePayload and the corresponding EstimatesRequest and RecurringInvoiceRequest handlers, causing stored document totals to disagree with their item prices and quantities. This issue is fixed in version 2.4.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
EUVD-2026-101586
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB