Skip to main content

Formwork EUVDEUVD-2026-91854

| CVE-2026-104478 HIGH
Path Traversal (CWE-22)
2026-10-03 disclosure@vulncheck.com GHSA-4v26-phwj-4v5r
7.1
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Formwork panel with backup permission
  2. Delivery
    Craft base64 backslash traversal payload
  3. Exploit
    Submit to BackupController download/delete
  4. Execution
    basename bypass escapes backup directory
  5. Impact
    Read or delete arbitrary file

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

Requires an authenticated Formwork panel account that has been granted the backup download or backup delete permission (PR:L) - not available to anonymous visitors. The target must be a Linux deployment, because the bypass relies on PHP basename() on Linux not treating the backslash as a directory separator; the exploit uses a base64-encoded, backslash-separated traversal string passed to BackupController's download/delete routes. Limiting factors: the permission requirement, the Linux-specific basename behavior, and the fact that impact is confined to file read and file deletion (no write/code execution). The backup path must be configured (system.backup.path), which is a normal default of the product.

Impact

This is a credible but moderate-priority issue rather than an emergency. The vendor-assigned CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:L, 7.1) is internally consistent with the description: network-reachable, low complexity, but requiring an authenticated panel user (PR:L) who already holds backup download or delete permission - a meaningful barrier that keeps this out of the mass-exploitation category. The primary impact is high confidentiality (arbitrary file read, e.g. config files holding credentials/secrets) with a secondary low availability impact (arbitrary file deletion); there is no code execution or integrity write primitive. No EPSS score, CISA KEV listing, POC, or SSVC decision data was provided in the input, so there is no signal of active or probable exploitation - consistent with a recently patched flaw in a niche product. A fix commit (89e7821) is confirmed in the official getformwork/formwork repository and the VulnCheck advisory corroborates the affected-version boundary (before 2.3.13). Note one platform caveat worth verifying operationally: the bypass is described as working specifically on Linux, because PHP's basename() does not treat the backslash as a path separator there, so Windows/other deployments may not be exploitable via the same payload.

Exploit ScenarioDerived

An attacker who has obtained a low-privilege Formwork panel account carrying backup download or delete permission (for example a compromised or over-provisioned editor account) crafts a base64-encoded, backslash-separated traversal payload for the backup parameter. On a Linux host, PHP basename() fails to strip the backslash-based traversal, so the request resolves outside the backup directory, letting the attacker read sensitive files such as configuration or credential files, or delete arbitrary files. No public exploit code was identified in the provided data, though the patch diff plainly reveals the vulnerable logic.

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

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

Alert me

AnalysisAIv1 – Oct 03, 2026

Arbitrary file read and deletion in Formwork panel versions before 2.3.13 affect authenticated users who hold backup download or backup delete permissions. Exploitation requires a Linux deployment, where PHP basename() fails to treat backslashes as directory separators, allowing a base64-encoded backslash-separated traversal payload to escape the configured backup directory. No public exploit code or CISA KEV confirmation was identified at time of analysis, and the impact is confined to file read and deletion with no code execution.

RemediationAI

Upgrade Formwork to 2.3.13 or later, which contains the upstream fix in commit 89e7821a6fcee89474cd401b3dde0c1dccb0687f. If immediate upgrade is not possible, remove backup download and backup delete permissions from all but essential trusted panel accounts; this reduces exposure but does not eliminate risk from an authorized backup administrator. If backup management is not required, disable or block the BackupController download and delete routes, accepting loss of that functionality. PHP open_basedir can constrain filesystem access for the web server user, but it may break legitimate application file operations and must be tested carefully. WAF rules targeting encoded traversal patterns may help but are not reliable because the payload is base64-encoded and bypasses basename()-based checks. Refer to the VulnCheck advisory at https://www.vulncheck.com/advisories/formwork-before-2.3.13-path-traversal-via-backupcontroller-download-and-delete.

Affected VersionsENISA

formwork 0 <2.3.13

Affected Packages

euvd formwork fix: 2.3.13

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

The issue is a CWE-22 path traversal in Formwork's Panel BackupController download and delete routes. User-controlled input arrives through a base64-encoded route parameter named backup; the vulnerable code decoded it, applied basename(), joined it to system.backup.path, and then operated on the resulting file. On Linux, PHP's basename() does not treat the backslash as a directory separator, so a payload using backslashes can survive basename() and be interpreted as traversal by downstream path handling. The upstream fix in commit 89e7821a6fcee89474cd401b3dde0c1dccb0687f replaces basename() with Formwork's Path::basename(), normalizes the backup path with Path::normalize(), and adds a Path::dirname() check to ensure the resolved file's directory still equals the configured backup path before file access. The provided CVSS 4.0 vector is AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:L/SC:N/SI:N/SA:N, and the independent CVSS 3.1 assessment is AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:L, confirming authenticated, remote, low-complexity exploitation with high confidentiality impact and low availability impact.

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 (vulncheck) PRIMARY 7.1 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:L/SC:N/SI:N/SA:N
vuln.today AI 7.1 HIGH

Network-reachable panel with low complexity but a required low-privilege authenticated role holding backup permission (PR:L); high confidentiality from arbitrary file read, low availability from file deletion, no integrity write.

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 03, 2026 - 01:01 EUVD
CVE Published
Oct 03, 2026 - 00:16 cve.org
HIGH 7.1

DescriptionCVE.org

Formwork before 2.3.13 contains a path traversal vulnerability in BackupController that allows authenticated panel users to read or delete arbitrary files. Attackers with backup download or delete permission can supply a base64-encoded backslash-separated traversal payload that bypasses PHP basename on Linux to access files outside the backup directory.

Executive ViewAI

Why It Matters

Formwork panel installations running on Linux are exposed to a high-severity flaw (CVE-2026-104478, CVSS 7.1) that allows a user with backup download or backup delete rights to read and destroy files outside the intended backup directory. Because backup stores typically hold configuration files, credentials, and database exports, a single abuse of these permissions could expose sensitive data or permanently remove the recovery artifacts the business depends on after an incident. No public exploit code and no confirmed active exploitation were identified at time of analysis, and the flaw does not permit code execution, so exposure is concentrated in organizations that grant broad backup privileges to panel users.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include restricting backup download and delete permissions to a minimal set of administrators, temporarily disabling those backup features, keeping backup directories on read-only or offline storage outside the panel's reach, segmenting Linux-hosted panel instances, applying web application firewall rules that block base64-encoded backslash and traversal payloads in backup requests, monitoring logs for anomalous backup activity, rotating secrets potentially exposed in readable backup files, and upgrading to Formwork panel 2.3.13 or later, which the advisory identifies as the first unaffected release.

Threat Intelligence Overview

EPSS Score
0.4%
Top 73% exploitable
Prevalence
Low
niche open-source flat-file PHP CMS, limited production footprint
Social Media
1
Sightings
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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
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
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

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

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