Skip to main content

Laravel Excel CVE-2026-84374

| EUVDEUVD-2026-69706 HIGH
Path Traversal (CWE-22)
2026-09-01 GitHub_M GHSA-c7r6-vx3h-w5g2
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Laravel application
  2. Delivery
    Submit crafted path traversal as export destination
  3. Exploit
    realpath() resolves path to existing web-accessible PHP file
  4. Execution
    Disk::copy() opens file with fopen(rb+) and overwrites via stream_copy_to_stream()
  5. Persist
    PHP file now contains export content with injected payload
  6. Impact
    Request overwrote PHP file to execute arbitrary PHP code

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

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

Exploitation Conditions

Exploitation requires all three of the following conditions simultaneously: (1) the application exposes a code path where attacker-controlled input reaches the $filePath parameter of Excel::store(), $export->store(), or storeExcel() - applications that hardcode or sanitize this path are not exploitable via this vector; (2) realpath() must resolve the attacker-supplied path to an existing file writable by the web server process, meaning a non-existent destination is handled safely by the else branch; (3) for RCE specifically, the overwritten file must be a PHP file accessible via the web server - overwriting non-PHP files results in file corruption only. CVSS PR:L confirms at least application-level authenticated access is required. The rb+ non-truncating behavior means shorter exports leave trailing artifact bytes, which may alert defenders monitoring file integrity.

Impact

The CVSS 7.5 vector (AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H) captures the threat accurately: high complexity (AC:H) reflects the precondition that an existing writable file must reside at the resolved path; low privileges (PR:L) reflect that an authenticated application user must control the export destination parameter. No EPSS score or CISA KEV listing appears in the input data, and no standalone POC is confirmed - exploitation probability is therefore unquantified but the commit diff makes the vulnerability straightforward to reproduce for a skilled attacker. The RCE path is realistic only when PHP files are writable by the web server process and the application surfaces the export path as user input, conditions that are common in poorly hardened deployments. Even a mid-sized municipal IT team in mielec running a Laravel SaaS application where export paths flow through user-submitted form fields should treat this as urgent, since the exploitation chain from path traversal to code execution is direct and the fix is a one-line removal. The C:H and A:H ratings are indirect (achieved through overwriting PHP files leading to RCE), not through direct data exfiltration, but they are well-supported once the I:H condition is met.

Exploit ScenarioDerived

An authenticated user submits a crafted export path such as ../../public/index.php through an application feature that passes the destination to Excel::store(). Laravel Excel's Disk::copy() resolves the traversal via realpath(), finds the existing index.php, and overwrites it with export file content containing embedded PHP code. A subsequent GET request to the application root executes the injected PHP payload as the web server process.

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

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

Alert me

AnalysisAIv1 – Sep 01, 2026

Path traversal in Laravel Excel (versions 3.1.8-3.1.69) allows authenticated low-privilege users to overwrite arbitrary existing files on the server by supplying a crafted destination path to Excel::store(), $export->store(), or storeExcel(). The vulnerable Disk::copy() method resolves caller-controlled paths via realpath() against the process working directory, then opens matched files directly with fopen(rb+) and stream_copy_to_stream(), bypassing Flysystem's path confinement entirely. When the overwritten target is a web-accessible PHP file, this escalates to remote code execution; no public exploit is identified at time of analysis.

RemediationAI

Upgrade to Laravel Excel 3.1.70, which is confirmed patched via the official release at https://github.com/SpartnerNL/Laravel-Excel/releases/tag/3.1.70 and commit b5cafdfcf7ec63924e83303763be8fcae340f70b. The fix removes the realpath() bypass branch in Disk::copy() and routes all writes through Flysystem's put() method, restoring disk-root path confinement. Prior to patching, applications should enforce server-side validation of export destination paths to ensure they resolve within the intended Flysystem disk root before being passed to Excel::store() or equivalent methods - rejecting any path whose realpath() resolves outside the disk root. Additionally, configure OS-level file permissions so the web server process cannot write to PHP application files; this does not prevent arbitrary file overwrite of other writable files but eliminates the RCE escalation path. The 3.1.70 release also fixes a related cleanup regression where temporary files were not deleted on disk failure, addressed via a try/finally block in src/Excel.php.

Affected VersionsENISA

Laravel-Excel 3.1.8, < 3.1.70

Affected Packages

composer maatwebsite/excel fix: 3.1.70
euvd laravel_excel_3_1_8 fix: 3.1.70

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Laravel Excel (Composer package spartnernl/laravel-excel) wraps PhpSpreadsheet to provide Excel and CSV export/import for Laravel applications. The root cause (CWE-22, Path Traversal) lives in src/Files/Disk.php in the Disk::copy() method across versions 3.1.8-3.1.69. When realpath($destination) returns a truthy result - meaning the path resolves to an existing file - the code bypasses the Flysystem storage abstraction and opens the raw filesystem path with fopen($destination, 'rb+'), then writes export content via stream_copy_to_stream(). The rb+ mode opens without truncating, so if the new export is shorter than the original file, trailing bytes from the old content remain - a secondary corruption artifact. Flysystem's disk-root confinement is only exercised via the else branch ($this->put()), which the vulnerable code skips for any pre-existing file. The fix in 3.1.70 removes the realpath() branch entirely, routing all writes through $this->put() unconditionally. CPE: cpe:2.3:a:spartnernl:laravel-excel:*:*:*:*:*:*:*:*.

Know when Laravel Excel 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_M) PRIMARY 7.5 HIGH
AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.5 HIGH

Network vector applies as path reaches server via HTTP; AC:H reflects requirement for existing writable target file; PR:L for authenticated app-level access controlling export destination; C/I/A:H via RCE chain through PHP file overwrite.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Sep 01, 2026 - 23:18 EUVD
CVE Published
Sep 01, 2026 - 21:28 cve.org
HIGH 7.5

DescriptionCVE.org

Laravel Excel provides supercharged Excel exports and imports in Laravel. From 3.1.8 until 3.1.70, in src/Files/Disk.php the Maatwebsite\Excel\Files\Disk::copy() method resolves the caller-controlled $destination supplied through Excel::store(), $export->store(), or storeExcel() against the process working directory with realpath() instead of the configured filesystem disk. If the path names an existing writable file, Disk::copy() opens it with fopen() in rb+ mode and uses stream_copy_to_stream(), bypassing Flysystem path confinement and allowing an attacker whose application input controls the export path to overwrite arbitrary existing files with export content. The rb+ behavior creates a non-truncating overwrite and trailing bytes when the new export is shorter, and overwriting an executable PHP file can lead to remote code execution. This issue is fixed in version 3.1.70.

Technical POC Analysis

CWE-22 (path traversal) combined with CWE-73 (external control of file name or path).

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

Laravel Excel versions 3.1.8-3.1.69 contain a file path vulnerability that enables authenticated users to overwrite application files and potentially gain control of affected servers. The vulnerability carries elevated risk because no security patch is currently available from the vendor, requiring immediate action to protect application integrity and prevent unauthorized access.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Implement strict file system access controls limiting write permissions to necessary directories only; restrict export endpoint access through authentication and authorization controls; disable export functionality in environments where it is not essential; implement file integrity checks on web-accessible files; maintain segmented backups of critical application files with immutable storage protection.

Threat Intelligence Overview

EPSS Score
0.6%
Top 55% exploitable
Prevalence
Medium
popular Laravel ecosystem package, widely used but not universally deployed
Threat Intel
1
1 sources
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.6%
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
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

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