Description
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 NotesController::show, NotesController::update, and NotesController::destroy authorize only the generic view notes or manage notes ability and do not pass the route-bound Note to NotePolicy::viewNotes or NotePolicy::manageNotes, so neither method checks the target note's company_id. Because the Note model has no global company scope, an authenticated staff user with ordinary note abilities can select another company's sequential note identifier and read, modify, or delete its reusable invoice, estimate, and payment note templates. This issue is fixed in version 2.4.0.
Published: 2026-10-14
Score: 7.6 High
EPSS: < 1% Very Low
KEV: No
Impact: Cross‑company data access and modification
Action: Immediate Patch
AI Analysis

Impact

InvoiceShelf NotesController actions authorise only generic note abilities and do not verify the target note’s company affiliation. As a result, any authenticated staff user can supply another company’s sequential note identifier and read, edit, or delete that company’s reusable templates. The flaw permits confidentiality loss and integrity compromise of note data across corporate boundaries, and it is a classic BOLA/IDOR vulnerability. The weakness is reflected by CWE‑639. The exploitation is trivial for an authenticated user because the application performs no further permission checks on the record being accessed.

Affected Systems

InvoiceShelf versions older than 2.4.0 are affected. The Note model in these releases lacks a global company scope, allowing cross‑company access. An authenticated staff user with ordinary note abilities can target any company’s notes by guessing or enumerating note identifiers.

Risk and Exploitability

The CVSS score of 7.6 indicates a medium‑high severity vulnerability. EPSS information is unavailable, and the issue is not currently listed in CISA KEV, suggesting a moderate to low likelihood of widespread exploitation on the internet. Nonetheless, the attack vector is straightforward: an authenticated user crafts a request to the NotesController with a note ID belonging to another company. Because the application does not enforce scoping, the request succeeds, granting read, modify, or delete rights over another company’s data.

Generated by OpenCVE AI on October 15, 2026 at 13:19 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to InvoiceShelf 2.4.0 or later, which adds company‑scoped checks to NotePolicy authorize calls.
  • If upgrading immediately is not possible, restrict staff users’ note privileges so that only notes belonging to their own company can be accessed, and apply a temporary company‑scoping filter in the application logic.
  • After applying a workaround or patch, audit all note access routes to confirm that the company_id check is enforced and that the Note model is protected by a global company scope.

Generated by OpenCVE AI on October 15, 2026 at 13:19 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 14 Oct 2026 19:45:00 +0000

Type Values Removed Values Added
Description 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 NotesController::show, NotesController::update, and NotesController::destroy authorize only the generic view notes or manage notes ability and do not pass the route-bound Note to NotePolicy::viewNotes or NotePolicy::manageNotes, so neither method checks the target note's company_id. Because the Note model has no global company scope, an authenticated staff user with ordinary note abilities can select another company's sequential note identifier and read, modify, or delete its reusable invoice, estimate, and payment note templates. This issue is fixed in version 2.4.0.
Title InvoiceShelf: Cross-company read/modify/delete of notes via missing company scope in NotePolicy (BOLA/IDOR)
Weaknesses CWE-639
References
Metrics cvssV3_1

{'score': 7.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-15T15:05:40.789Z

Reserved: 2026-06-16T18:57:40.182Z

Link: CVE-2026-55382

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-10-14T20:17:48.200

Modified: 2026-10-15T21:08:49.703

Link: CVE-2026-55382

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-15T13:30:02Z

Weaknesses
  • CWE-639

    Authorization Bypass Through User-Controlled Key