Register for the AI for Security Summit: Join Figma, Perplexity & Wiz

CVE-2026-54182
PHP vulnerability analysis and mitigation

Overview

CVE-2026-54182 is a pre-authentication OS command injection vulnerability in Laravel Backpack CRUD (backpack/crud) affecting the Stats::makeCurlRequest method. The vulnerability was reported by Vishal Shukla (@shukla304) via sechub.dev AI Agent, first published to the GitHub Advisory Database on June 15, 2026, and last updated August 20, 2026. Affected versions span multiple branches: >= 4.1.0, < 4.1.72; >= 5.0.0, < 5.6.2; >= 6.0.0, < 6.8.13; and >= 7.0.0, < 7.0.36. It carries a CVSS v3.1 base score of 8.1 (High) (GitHub Advisory).

Technical details

The root cause is improper input validation and missing output escaping (CWE-20, CWE-78, CWE-116) in Backpack\CRUD\Stats::makeCurlRequest, which constructs a shell command by embedding the HTTP Host header value without sanitization and passes it directly to PHP's exec(). An attacker can inject shell metacharacters (e.g., ;, |, `) into a crafted Host header to break out of the intended argument context and execute arbitrary OS commands. The vulnerable code path is triggered from BackpackServiceProvider::boot() on every HTTP request in production environments where both exec() and the curl binary are available. The only probabilistic guard is a 1-in-100 random gate, which an attacker can reliably bypass through repeated requests (GitHub Advisory).

Impact

Successful exploitation grants unauthenticated remote code execution as the web server process user (www-data, nginx, etc.), providing full access to the application's environment secrets including APP_KEY, database credentials, and API keys stored in .env files. An attacker can read, modify, or delete files on the filesystem, pivot to internal services reachable from the server, and potentially escalate privileges or establish persistent access. The combination of high confidentiality, integrity, and availability impact makes this a severe threat to any unpatched Laravel Backpack deployment running in a non-hardened environment (GitHub Advisory).

Exploitability

No public proof-of-concept exploit code or evidence of in-the-wild exploitation has been reported as of the advisory publication date. The CVE status is listed as "Reserved," and no EPSS score or CISA KEV catalog entry is currently available. Exploitation requires that the web server (nginx/Apache) does not strip malformed Host headers before they reach PHP, and that exec() is not disabled in the PHP configuration — both conditions must be simultaneously present, which elevates the attack complexity to High (GitHub Advisory).

Exploitation steps

  1. Reconnaissance: Identify internet-facing Laravel applications using the backpack/crud Composer package in a vulnerable version range (4.1.x < 4.1.72, 5.x < 5.6.2, 6.x < 6.8.13, 7.x < 7.0.36). Look for admin panel routes (e.g., /admin) characteristic of Backpack installations.
  2. Verify preconditions: Confirm that the target web server (nginx/Apache) does not strip or reject non-standard Host headers, and that PHP's exec() function is not disabled (disable_functions in php.ini).
  3. Craft malicious Host header: Construct an HTTP request with a Host header containing shell injection characters, e.g., Host: legitimate.com; <command> or using backtick/pipe variants to inject an OS command.
  4. Trigger the vulnerable code path: Send repeated HTTP requests (up to ~100 retries on average) to any endpoint of the Backpack application to hit the 1-in-100 random gate that invokes Stats::makeCurlRequest via BackpackServiceProvider::boot().
  5. Achieve command execution: The injected command executes as the web server user. Use this to exfiltrate .env contents, establish a reverse shell, or perform further lateral movement (GitHub Advisory).

Indicators of compromise

  • Network: Repeated HTTP requests to any Backpack application endpoint with anomalous or malformed Host headers containing shell metacharacters (;, |, `, $()).
  • Network: Unexpected outbound connections from the web server process to attacker-controlled IPs (e.g., reverse shell callbacks or data exfiltration).
  • Logs: Web server access logs showing high volumes of requests from a single IP with varying or malformed Host header values.
  • Logs: PHP error logs or application logs showing unexpected exec() calls or shell command errors originating from the Stats class.
  • Process: Unusual child processes spawned by the PHP-FPM or web server process (e.g., /bin/sh, bash, curl, wget, python) not associated with normal application activity.
  • File System: New or modified files in the web root or /tmp directory, particularly scripts or binaries dropped by the web server user (www-data, nginx).
  • File System: Unauthorized access or reads of .env files logged by file integrity monitoring tools.

Mitigation and workarounds

Upgrade backpack/crud to the following patched versions immediately: 4.1.72, 5.6.2, 6.8.13, or 7.0.36, depending on the branch in use. The fix replaces the vulnerable makeCurlRequest shell-based implementation with the Guzzle HTTP client already present in the codebase, eliminating shell command construction entirely. As interim mitigations where upgrading is not immediately possible: disable PHP's exec() function via disable_functions in php.ini, and configure nginx or Apache to reject or sanitize malformed Host headers before they reach PHP (GitHub Advisory, Release 4.1.72, Release 7.0.36).

Community reactions

The vulnerability was reported through sechub.dev AI Agent by Vishal Shukla (@shukla304), with remediation coordinated by Backpack maintainer tabacitu and patch developer pxpm. The fix was quietly released across all supported branches in May 2026, with the advisory formally published to the GitHub Advisory Database in August 2026. No significant broader media coverage or notable public researcher commentary beyond the advisory itself has been identified (GitHub Advisory).

Additional resources


SourceThis report was generated using AI

Related PHP vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-71537MEDIUM6.5
  • PHP logoPHP
  • paymenter/paymenter
NoYesSep 18, 2026
CVE-2026-77616MEDIUM6.1
  • PHP logoPHP
  • mediawiki/semantic-media-wiki
NoYesSep 18, 2026
CVE-2026-77610MEDIUM6.1
  • PHP logoPHP
  • mediawiki/semantic-media-wiki
NoYesSep 18, 2026
CVE-2026-77609MEDIUM6.1
  • PHP logoPHP
  • mediawiki/semantic-media-wiki
NoYesSep 18, 2026
CVE-2026-77608MEDIUM6.1
  • PHP logoPHP
  • mediawiki/semantic-media-wiki
NoYesSep 18, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management