Skip to main content

InvoiceShelf EUVDEUVD-2026-101611

| CVE-2026-55381 HIGH
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-14 security-advisories@github.com
7.1
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with create-invoice ability
  2. Delivery
    Enumerate foreign estimate IDs
  3. Exploit
    POST convert-to-invoice with victim estimate ID
  4. Execution
    Route-model binding resolves cross-tenant estimate
  5. Impact
    Copy data into attacker invoice and alter/delete original

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Requires a multi-company (multi-tenant) InvoiceShelf deployment running a version prior to 2.4.0, and an authenticated account that holds the create-invoice ability (PR:L), reaching POST /api/v1/estimates/{estimate}/convert-to-invoice in ConvertEstimateController. The specific prerequisite is that route-model binding resolves the bound Estimate from ANY company while the controller authorizes only the create-invoice ability and omits authorization of access to the estimate itself. Limiting factors: exploitation is irrelevant on single-company instances, needs valid authenticated credentials with the create-invoice ability, and the destructive effect on the source estimate depends on the victim company's configured conversion action reaching checkForEstimateConvertAction. No special network position or user interaction is required.

Impact

This is a credible, moderate-priority authorization flaw (CWE-639, IDOR / broken object-level authorization) rather than an overblown high-CVSS issue. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N, base 7.1) is internally consistent with the description: network-reachable API, low complexity, and only low privileges (any authenticated user holding the create-invoice ability) are needed, with no user interaction. The high confidentiality rating is justified because an attacker can exfiltrate another company's full estimate contents (line items, prices, totals, taxes, notes, currency, and customer data), and the low integrity rating reflects that the victim company's configured conversion action can also change or delete the original estimate. No EPSS score, CISA KEV entry, or public POC is present in the provided data, so there is no evidence of active or widespread exploitation; the signals point to an exploitable-but-not-yet-weaponized tenant-isolation bug. The key limiting factor is multi-tenancy: the flaw only matters where one InvoiceShelf instance hosts multiple companies and the attacker already holds a valid account with create-invoice ability, which keeps real-world risk below what the 7.1 score alone might suggest. Note the input tag 'Authentication Bypass' is imprecise - authentication is not bypassed; authorization/tenant isolation is.

Exploit ScenarioDerived

An authenticated user in a multi-company InvoiceShelf deployment who holds the create-invoice ability enumerates estimate IDs and sends POST /api/v1/estimates/{id}/convert-to-invoice referencing an estimate belonging to a different company. Because the controller authorized only the create-invoice ability and not access to the route-bound Estimate, the foreign estimate's data is copied into an invoice in the attacker's company and the victim's configured conversion action may alter or delete the original. No public exploit code is identified at time of analysis, but the single-request nature makes exploitation trivial once a low-privileged account is available.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 14, 2026

Cross-tenant IDOR in InvoiceShelf before 2.4.0 lets an authenticated user with the create-invoice ability convert an estimate belonging to a different company by calling POST /api/v1/estimates/{estimate}/convert-to-invoice. Because route-model binding resolves the estimate without a company check, the attacker can copy another tenant's line items, prices, taxes, totals, notes, currency and customer data into an invoice in their own company, and the victim's configured conversion action may also modify or delete the source estimate - an exposed-data and integrity impact scored CVSS 7.1 with PR:L, requiring an authenticated account. Exploitation is only meaningful on multi-company (multi-tenant) deployments and no public exploit code has been identified at time of analysis; the vendor-released fix is version 2.4.0.

RemediationAI

Vendor-released patch: 2.4.0 - upgrade InvoiceShelf to version 2.4.0 or later, which adds the missing $this->authorize('view', $estimate) check to ConvertEstimateController (commit e432e4e, PR 661) and, in the same change set, tightens tenant scoping for note retrieval/update/delete via NotePolicy and for bulk user deletion via UsersController. Because those sibling authorization gaps share the same underlying tenant-isolation weakness, apply the full 2.4.0 release rather than cherry-picking only the estimate controller change, otherwise notes and user-deletion endpoints remain cross-tenant exposed. Where an immediate upgrade is not possible, restrict the create-invoice ability to the smallest possible set of trusted roles in each company, since the flaw requires that ability; this is only a partial mitigation because any user who legitimately holds create-invoice can still reach the vulnerable route, and it does nothing about the sibling note and user-deletion issues. On deployments that do not need multi-tenant operation, consolidating to a single company removes the cross-company attack surface entirely but may disrupt legitimate business workflows. Audit estimate and invoice records for invoices created from estimates whose IDs do not belong to the creating company, and review notes and user accounts for unauthorized cross-company changes, on the assumption that exploitation leaves those traces; monitor and, where feasible, restrict access to the /api/v1/estimates/*/convert-to-invoice endpoint at the reverse proxy for non-essential clients, accepting that this may break legitimate mobile and web conversion flows. Consult the vendor advisory at https://github.com/InvoiceShelf/InvoiceShelf/security/advisories/GHSA-j2vg-rxqr-5vc9 and the release notes at https://github.com/InvoiceShelf/InvoiceShelf/releases/tag/2.4.0 for authoritative guidance.

Affected VersionsENISA

InvoiceShelf < 2.4.0

Affected Packages

euvd invoiceshelf fix: 2.4.0

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

Root cause is CWE-639 (Authorization Bypass Through User-Controlled Key), the classic insecure direct object reference / broken object-level authorization pattern. In Laravel, route-model binding automatically resolves an {estimate} route parameter into an Eloquent Estimate model by primary key, so the identifier supplied by the caller is attacker-controlled. ConvertEstimateController authorized only the caller's create-invoice ability against the Estimate class rather than authorizing access to the resolved instance, meaning the ability check was global and tenant-agnostic; the missing step was an instance-level policy check (view) against the bound estimate. InvoiceShelf supports multi-company tenancy, so an estimate ID from any company was convertible by any user holding create-invoice anywhere. The disclosure surface includes the source estimate's line items, prices, totals, taxes, notes, currency and customer data, and the source record can further be altered or removed when the victim company's configured conversion action reaches checkForEstimateConvertAction. The upstream fix commit e432e4e adds $this->authorize('view', $estimate) to ConvertEstimateController, but the same commit also hardens adjacent multi-tenant authorization gaps: NotePolicy manageNotes/viewNotes policies were changed to accept an optional Note and enforce that the note's company_id matches a company the user belongs to, NotesController calls were updated to pass the bound model, and UsersController::delete was scoped with User::whereCompany() so bulk user deletion cannot target accounts in other companies. These sibling fixes indicate a broader tenant-isolation review rather than an isolated one-line patch.

Know when Laravel gets its next vulnerability

  • 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

Vendor (github) PRIMARY 7.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
vuln.today AI 7.1 HIGH

Network API with low complexity; any authenticated user with create-invoice ability suffices, so PR:L; full cross-tenant data disclosure gives C:H while limited estimate modification/deletion gives I:L and no availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Oct 14, 2026 - 21:18 EUVD
CVE Published
Oct 14, 2026 - 20:17 cve.org
HIGH 7.1

DescriptionCVE.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, POST /api/v1/estimates/{estimate}/convert-to-invoice in ConvertEstimateController authorizes only the caller's create-invoice ability and does not authorize access to the route-bound Estimate. Because route-model binding can resolve an estimate from any company, an authenticated user with create-invoice ability can copy another company's line items, prices, totals, taxes, notes, currency, and customer data into an invoice in the attacker's company. The victim company's configured conversion action reaches checkForEstimateConvertAction and can also change or delete the original estimate. This issue is fixed in version 2.4.0.

Technical POC Analysis

CWE-639 (Authorization Bypass Through User-Controlled Key), a cross-tenant IDOR.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

InvoiceShelf deployments that serve multiple customer companies are exposed to a cross-tenant data leak in which any authenticated user holding invoice-creation rights can pull another organization's estimate contents - line items, pricing, taxes, totals, notes, currency and customer details - into their own records, and may also modify or delete the source estimate. Leadership should care because this breaks the tenant-isolation guarantee customers contract for, creating privacy, integrity and commercial-trust exposure toward clients whose data and records may be copied or destroyed by an unrelated tenant. Single-company installations are not meaningfully affected, so the blast radius is limited to multi-tenant environments.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Low
niche self-hosted open-source invoicing app, limited enterprise footprint
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

CVE-2017-16894 HIGH POC
7.5 Nov 20

In Laravel framework through 5.5.21, remote attackers can obtain sensitive information (such as externally usable passwo

CVE-2025-54068 CRITICAL POC
9.8 Jul 17

Laravel Livewire v3 through v3.6.3 contains a critical remote code execution vulnerability (CVE-2025-54068, CVSS 9.8) th

CVE-2025-53833 CRITICAL POC
10.0 Jul 14

LaRecipe versions prior to 2.8.1 contain a Server-Side Template Injection (SSTI) vulnerability that can lead to Remote C

CVE-2026-28289 CRITICAL POC
10.0 Mar 03

File upload bypass in FreeScout 1.8.206 — patch bypass for CVE-2026-27636. PoC and patch available. CVSS 10.0.

CVE-2026-27636 HIGH POC
8.8 Feb 25

Remote code execution in FreeScout prior to version 1.8.206 allows authenticated users to upload `.htaccess` files that

CVE-2018-15133 HIGH POC
8.1 Aug 09

In Laravel Framework through 5.5.40 and 5.6.x through 5.6.29, remote code execution might occur as a result of an unseri

CVE-2025-70841 CRITICAL POC
10.0 Feb 03

Dokans SaaS e-commerce platform v3.9.2 has a CVSS 10.0 authentication bypass allowing unauthenticated attackers to obtai

CVE-2026-27637 CRITICAL POC
9.8 Feb 25

Predictable password reset tokens in FreeScout help desk before 1.8.206. Weak random number generation allows attackers

CVE-2026-21448 CRITICAL POC
9.8 Jan 02

Bagisto eCommerce platform before 2.3.10 is vulnerable to server-side template injection (SSTI) through customer address

CVE-2026-21446 CRITICAL POC
9.8 Jan 02

Bagisto eCommerce platform (2.3 branch before 2.3.10) leaves installation API routes active after setup, allowing unauth

CVE-2022-2870 CRITICAL POC
9.8 Aug 17

A vulnerability was found in laravel 5.1 and classified as problematic. Rated critical severity (CVSS 9.8), this vulnera

CVE-2026-114509 CRITICAL POC
9.2 Oct 21

Laravel TokenGuard authentication bypass is a genuine high-priority issue, not an inflated CVSS score: unauthenticated a

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy