Skip to main content

laravel-backup-restore EUVDEUVD-2026-71722

| CVE-2026-53932 HIGH
Command Injection (CWE-77)
2026-07-09 https://github.com/stefanzweifel/laravel-backup-restore GHSA-w9mx-xmg4-gc4r
8.0
CVSS 3.1 · Vendor: https://github.com/stefanzweifel/laravel-backup-restore
Share

Severity by source

Vendor (https://github.com/stefanzweifel/laravel-backup-restore) PRIMARY
8.0 HIGH
AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
vuln.today AI
8.8 HIGH

Attacker supplies the archive so needs no target privileges (PR:N), but a restore must be triggered (UI:R); trivial payload crafting (AC:L) yields full code execution as the app user (C:H/I:H/A:H).

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

Primary rating from Vendor (https://github.com/stefanzweifel/laravel-backup-restore).

CVSS VectorVendor: https://github.com/stefanzweifel/laravel-backup-restore

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

Lifecycle Timeline

2
Analysis Generated
Jul 09, 2026 - 21:22 vuln.today
CVE Published
Jul 09, 2026 - 20:52 github-advisory
HIGH 8.0

DescriptionCVE.org

Summary

A crafted backup archive can trigger OS command injection during database restore. The restore workflow extracts a ZIP archive, enumerates files under db-dumps, converts the dump path to an absolute path, and passes that path into database import commands that are built as shell command strings.

The dump filename is not shell-escaped before it is interpolated into commands such as:

  • mysql ... < {dumpFile}
  • gunzip -c {dumpFile} / gunzip < {dumpFile}
  • psql ... < {dumpFile}
  • sqlite3 ... < {dumpFile}

Because Illuminate\Support\Facades\Process::run(string) uses Symfony Process::fromShellCommandline(), shell metacharacters in the dump filename are interpreted by /bin/sh on Unix-like systems or by the platform shell on Windows.

Impact

If an attacker can cause an operator or automation to restore a malicious backup archive, the attacker can execute arbitrary shell commands as the PHP/Laravel application user on the system performing the restore. This can lead to application compromise, database credential disclosure, tampering with restored data, and further lateral movement depending on deployment permissions.

This is not about malicious SQL inside the dump. The command injection is carried in the ZIP entry filename under db-dumps, before the dump content is imported.

Patches

The vulnerability has been fixed in v1.9.4 of the package.

Workarounds

There is no configuration option that disables the vulnerable code path. Upgrading to the patched release is the only complete fix.

AnalysisAI

OS command injection in the wnx/laravel-backup-restore Composer package (fixed in v1.9.4) allows an attacker who can get a malicious backup archive restored to run arbitrary shell commands as the Laravel application user. The restore workflow interpolates an unescaped ZIP entry filename from the db-dumps directory directly into shell command strings (mysql, psql, sqlite3, gunzip) executed via Symfony Process::fromShellCommandline(), so shell metacharacters in the filename are interpreted by /bin/sh. No public exploit identified at time of analysis and the issue is not in CISA KEV, but the flaw is trivially exploitable once a crafted archive reaches the restore path.

Technical ContextAI

The affected component is a Laravel package (pkg:composer/wnx_laravel-backup-restore) that companions spatie/laravel-backup by handling database restore from backup ZIP archives. The root cause is CWE-77 (Command Injection): the restore routine enumerates files under db-dumps, resolves the dump to an absolute path, and builds import commands as raw shell strings such as 'mysql ... < {dumpFile}' or 'gunzip -c {dumpFile}'. Because Illuminate\Support\Facades\Process::run(string) delegates to Symfony's Process::fromShellCommandline(), the whole string is handed to the platform shell (/bin/sh on Unix, cmd/PowerShell on Windows) rather than executed as an argv array, so metacharacters ($(), ;, |, backticks) embedded in the attacker-controlled filename are evaluated. Importantly the injection is in the ZIP entry filename metadata, not in the SQL dump content, so it fires before any database import actually reads the dump.

RemediationAI

Primary fix: upgrade to laravel-backup-restore v1.9.4 or later (Vendor-released patch: v1.9.4), e.g. 'composer require wnx/laravel-backup-restore:^1.9.4' then redeploy. The vendor states there is no configuration flag that disables the vulnerable code path, so upgrading is the only complete fix. As interim compensating controls until you can upgrade: restore only backup archives originating from a trusted, integrity-verified source and never from user-supplied or externally-writable storage (trade-off: breaks workflows that ingest external backups); validate or reject ZIP entry filenames under db-dumps that contain shell metacharacters before invoking the restore (trade-off: requires custom code and may reject legitimately odd filenames); and run the restore process under a least-privileged, sandboxed OS account to limit blast radius if injection occurs (trade-off: does not prevent the injection, only contains it). Refer to advisory GHSA-w9mx-xmg4-gc4r for authoritative guidance.

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

Share

EUVD-2026-71722 vulnerability details – vuln.today

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