Skip to main content

InvoiceShelf EUVDEUVD-2026-101612

| CVE-2026-55385 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-10-14 security-advisories@github.com
6.8
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Gain owner access to PDF config
  2. Delivery
    Set gotenberg_host to internal/metadata URL
  3. Exploit
    Bypass syntactic-only URL validation
  4. Execution
    Trigger invoice/estimate PDF render
  5. Persist
    Server sends HTML to attacker host
  6. Impact
    Exfiltrate customer data / reach internal services

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires owner/administrator access to InvoiceShelf's PDF configuration to set the gotenberg_host value (hence PR:H), and the instance must use the Gotenberg PDF driver so that GotenbergPDFDriver::loadView dispatches the multipart render request. Pre-patch (versions before 2.4.0), the gotenberg_host is validated only as a syntactically valid URL with no check that resolved IPs are public, so loopback, private (RFC1918), link-local/cloud-metadata (169.254.169.254), CGNAT, and reserved ranges are all reachable. Exploitation is LIMITED by: the owner-level privilege needed to change the setting, the requirement that a PDF (invoice, estimate, or payment) actually be rendered to fire the request, and deployment in an environment where internal services or a cloud metadata endpoint are network-reachable from the server. The 2.4.0 fix adds SafeRemoteUrl validation at both request time and render time (defending against env/seed/stale config and DNS rebinding).

Impact

This is a moderate, privilege-gated SSRF (CWE-918) rather than a widespread emergency. The provided CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N = 6.8) is internally consistent with the description: network-reachable, low complexity, but requiring PR:H because the exploitable gotenberg_host setting is owner/administrator-controlled configuration. The scope change (S:C) and C:H are justified because a malicious or attacker-influenced host value makes the server reach internal services and cloud metadata endpoints and exfiltrate customer PII/invoice data to an external host - impact crosses a trust boundary. No EPSS score, KEV listing, or POC indicator is present in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The practical risk is bounded by the PR:H requirement: an attacker must already hold owner-level control of the PDF configuration (or leverage env/seed/stale config, or DNS rebinding, which the vendor's defense-in-depth patch explicitly addresses). Net: a legitimate priority for self-hosted InvoiceShelf operators in multi-tenant or cloud-metadata-exposed environments, but not a mass-exploitation threat given the authentication barrier and niche product footprint.

Exploit ScenarioDerived

An authenticated InvoiceShelf owner sets the gotenberg_host PDF setting to a URL whose host resolves to an internal address (e.g. 169.254.169.254 or an RFC1918 service), which passes the pre-patch syntactic-URL-only validation. On the next invoice, estimate, or payment PDF render, the server sends a multipart HTTP request to that host, allowing reconnaissance of internal services or capture of cloud metadata, and leaking customer names, addresses, line items, totals, and company identifiers to an attacker-chosen external endpoint. No public exploit code is identified in the provided data.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 14, 2026

Server-side request forgery in InvoiceShelf before version 2.4.0 lets an authenticated owner-level administrator point the user-controlled gotenberg_host setting at arbitrary internal addresses, causing the application to POST rendered invoice, estimate, or payment HTML to that destination during PDF generation. Affected deployments are those running a version prior to 2.4.0 with the Gotenberg PDF driver enabled; the assessed vector is AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N (CVSS 6.8), so the attack is gated behind high privileges and requires a PDF render to actually occur. No public exploit code has been identified at time of analysis and there is no confirmation of active exploitation; the primary risk is internal service and cloud metadata (169.254.169.254) reachability plus exfiltration of customer names, addresses, line items, totals, and company identifiers to an attacker-chosen host.

RemediationAI

Upgrade InvoiceShelf to version 2.4.0 or later, which is the vendor-released patch and introduces the SafeRemoteUrl validation rule at both request-validation and PDF-render time; the release is available at https://github.com/InvoiceShelf/InvoiceShelf/releases/tag/2.4.0 and the code change is visible in commit d615cfb4ff4841a3b8cda7fc850a2bb335521fe5 and pull request https://github.com/InvoiceShelf/InvoiceShelf/pull/664. Until upgrading, the most effective compensating control is to stop using the Gotenberg PDF driver and switch to an alternative PDF generation driver so that gotenberg_host is never dispatched, accepting the functional difference in PDF rendering. If Gotenberg must remain in use, constrain the blast radius by enforcing egress filtering on the InvoiceShelf host so outbound HTTP to RFC1918, loopback, link-local, CGNAT, and reserved ranges is dropped at the firewall or security group - this blocks SSRF to internal services and to 169.254.169.254, though it may also break any legitimately internal Gotenberg deployment and requires careful allowlisting. Cloud-side, enforce IMDSv2 (session-token-required) on AWS or the equivalent on other providers so that a successful metadata request cannot retrieve long-lived credentials, and place the InvoiceShelf server in a segmented network where its outbound reachability is limited to the ticket-relevant services. Additionally, restrict owner-level accounts to fully trusted personnel, since the vulnerability requires PR:H administrative access to the PDF configuration, and review the existing gotenberg_host value in the database for any non-public host that may already have been configured.

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

InvoiceShelf is a PHP/Laravel invoicing and expense-tracking application that offers a Gotenberg-based PDF driver for rendering invoice, estimate, and payment documents. Gotenberg is a stateless Docker service that accepts an HTTP multipart/form-data request (typically to /forms/chromium/convert/html) containing HTML and returns a rendered PDF, so the application's GotenbergPDFDriver::loadView constructs that multipart request and sends the rendered document HTML as document.html to the configured host. The root cause is a classic CWE-918 server-side request forgery: PDFConfigurationRequest.php in versions prior to 2.4.0 validated the owner-controlled gotenberg_host value only as a syntactically valid URL, with no check that the hostname's resolved IP addresses were public. Because no address filtering existed, an attacker with owner rights could supply a literal IP or hostname resolving to loopback (127.0.0.0/8, ::1), RFC1918 private space, link-local including the cloud instance metadata endpoint 169.254.169.254/16, CGNAT (100.64.0.0/10), and reserved or 'this network' ranges (0.0.0.0/8). The server-side nature of Gotenberg dispatch means the request originates from the InvoiceShelf host's network position, giving access to services that are otherwise unreachable from the internet. The vendor fix in 2.4.0 introduces an App\Rules\SafeRemoteUrl validation rule that parses the URL, enforces an http/https scheme, resolves the host via DNS A/AAAA records (falling back to gethostbynamel), rejects unresolvable hosts, and verifies every resolved IP with FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE plus explicit blocked range checks for loopback, link-local/metadata, CGNAT, and 'this' network, along with IPv6 checks for ::1, fe80::/10, fc00::/7. The rule is applied twice - once at request-validation time and again inside GotenbergPDFDriver::loadView as defense in depth - so that a host that bypassed request-time validation through environment variables, seeding, stale configuration, or a DNS-rebinding race is still refused at render time with a RuntimeException.

Know when PHP 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 6.8 MEDIUM
AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:N/A:N
vuln.today AI 6.8 MEDIUM

Exploit needs owner-controlled PDF config so PR:H; network-triggered render with scope change into internal services and PII exfiltration gives S:C and C:H, with no integrity or availability impact.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

1
Patch available
Oct 14, 2026 - 21:18 EUVD

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, InvoiceShelf's PDFConfigurationRequest.php validates the owner-controlled gotenberg_host setting only as a syntactically valid URL. GotenbergPDFDriver::loadView later sends a multipart HTTP request containing rendered invoice, estimate, or payment HTML as document.html to that host without rejecting private, loopback, link-local, or reserved addresses. An owner can use PDF generation to reach internal services or cloud metadata endpoints, and a configured external host receives customer names, addresses, line items, totals, and company identifiers from subsequent PDF renders. This issue is fixed in version 2.4.0.

Threat Intelligence Overview

EPSS Score
0.5%
Top 62% exploitable
Prevalence
Low
niche open-source self-hosted invoicing app, limited enterprise deployment
Data Quality
5 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

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