{"id":"GHSA-mrc5-3mm3-45c5","summary":"Laravel Backpack CRUD: OS command injection in Stats::makeCurlRequest via attacker-controlled Host header (pre-auth)","details":"## Summary\n\n`Backpack\\CRUD\\Stats::makeCurlRequest` builds a shell command using unescaped input that originates from the HTTP `Host` header, then passes it to `exec()`. A specially crafted Host header can break out of the shell argument and cause the server to execute arbitrary OS commands as the web user.\n\nThe vulnerable code path is reached from `BackpackServiceProvider::boot()` on every HTTP request in production when `exec()` and `curl` are available. A 1-in-100 random gate is the only guard — an attacker can reliably trigger it by retrying.\n\n## Severity\n\n**High — CVSS 8.1**  \n`CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H`\n\nAttack Complexity is rated **High** because default nginx and Apache configurations typically strip or reject malformed Host headers before they reach PHP, and `exec()` is often disabled for web processes in hardened environments. Both mitigations must be absent for exploitation.\n\n## Impact\n\nA successful exploit yields OS command execution as the web server user (`www-data`, `nginx`, etc.), giving an unauthenticated attacker access to environment secrets (APP_KEY, database credentials, API keys in `.env`), the filesystem, and any service the server can reach.\n\n## Fix\n\n`makeCurlRequest` was replaced with the Guzzle-based path already present in the codebase, eliminating the shell-command construction entirely. **Upgrade to a patched release immediately.**\n\n## Affected versions\n\n| Branch | Vulnerable range | First safe version |\n|--------|-----------------|-------------------|\n| 4.1.x  | `\u003c 4.1.70`      | 4.1.70            |\n| 5.x    | `\u003c 5.6.2`       | 5.6.2             |\n| 6.x    | `\u003c 6.8.13`      | 6.8.13            |\n| 7.x    | `\u003c 7.0.36`      | 7.0.36            |\n\n## Credits\n\nReported by Vishal Shukla ([@shukla304](https://github.com/shukla304)) via sechub.dev AI Agent.","aliases":["CVE-2026-54182"],"modified":"2026-08-20T18:56:17.264030Z","published":"2026-08-20T18:38:55Z","database_specific":{"github_reviewed":true,"github_reviewed_at":"2026-08-20T18:38:55Z","nvd_published_at":null,"cwe_ids":["CWE-116","CWE-20","CWE-78"],"severity":"HIGH"},"references":[{"type":"WEB","url":"https://github.com/Laravel-Backpack/CRUD/security/advisories/GHSA-mrc5-3mm3-45c5"},{"type":"PACKAGE","url":"https://github.com/Laravel-Backpack/CRUD"},{"type":"WEB","url":"https://github.com/Laravel-Backpack/CRUD/releases/tag/4.1.72"},{"type":"WEB","url":"https://github.com/Laravel-Backpack/CRUD/releases/tag/5.6.2"},{"type":"WEB","url":"https://github.com/Laravel-Backpack/CRUD/releases/tag/6.8.13"},{"type":"WEB","url":"https://github.com/Laravel-Backpack/CRUD/releases/tag/7.0.36"}],"affected":[{"package":{"name":"backpack/crud","ecosystem":"Packagist","purl":"pkg:composer/backpack/crud"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.1.0"},{"fixed":"4.1.72"}]}],"versions":["4.1.0","4.1.1","4.1.10","4.1.11","4.1.12","4.1.13","4.1.14","4.1.15","4.1.16","4.1.17","4.1.18","4.1.19","4.1.2","4.1.20","4.1.21","4.1.22","4.1.23","4.1.24","4.1.25","4.1.26","4.1.27","4.1.28","4.1.29","4.1.3","4.1.30","4.1.31","4.1.32","4.1.33","4.1.34","4.1.35","4.1.36","4.1.37","4.1.38","4.1.39","4.1.4","4.1.40","4.1.41","4.1.42","4.1.43","4.1.44","4.1.45","4.1.46","4.1.47","4.1.48","4.1.49","4.1.5","4.1.50","4.1.51","4.1.52","4.1.53","4.1.54","4.1.55","4.1.56","4.1.57","4.1.58","4.1.59","4.1.6","4.1.60","4.1.61","4.1.62","4.1.63","4.1.64","4.1.65","4.1.66","4.1.67","4.1.68","4.1.69","4.1.7","4.1.70","4.1.71","4.1.8","4.1.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-mrc5-3mm3-45c5/GHSA-mrc5-3mm3-45c5.json"}},{"package":{"name":"backpack/crud","ecosystem":"Packagist","purl":"pkg:composer/backpack/crud"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.0.0"},{"fixed":"5.6.2"}]}],"versions":["5.0.0","5.0.1","5.0.10","5.0.11","5.0.12","5.0.13","5.0.14","5.0.15","5.0.16","5.0.17","5.0.18","5.0.19","5.0.2","5.0.20","5.0.21","5.0.3","5.0.4","5.0.5","5.0.6","5.0.7","5.0.8","5.0.9","5.1.0","5.1.1","5.1.2","5.1.3","5.1.4","5.2.0","5.2.1","5.2.2","5.3.0","5.3.1","5.3.10","5.3.11","5.3.12","5.3.13","5.3.2","5.3.3","5.3.4","5.3.5","5.3.6","5.3.7","5.3.8","5.3.9","5.4.0","5.4.1","5.4.10","5.4.11","5.4.12","5.4.13","5.4.14","5.4.15","5.4.16","5.4.2","5.4.3","5.4.4","5.4.5","5.4.6","5.4.7","5.4.8","5.4.9","5.5.0","5.5.1","5.5.2","5.5.3","5.5.4","5.5.5","5.5.6","5.5.7","5.5.8","5.6.0","5.6.1"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-mrc5-3mm3-45c5/GHSA-mrc5-3mm3-45c5.json"}},{"package":{"name":"backpack/crud","ecosystem":"Packagist","purl":"pkg:composer/backpack/crud"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"6.0.0"},{"fixed":"6.8.13"}]}],"versions":["6.0.0","6.0.1","6.0.2","6.0.3","6.0.4","6.0.5","6.0.6","6.0.7","6.1.0","6.1.1","6.1.10","6.1.11","6.1.12","6.1.13","6.1.14","6.1.15","6.1.16","6.1.2","6.1.3","6.1.4","6.1.5","6.1.6","6.1.7","6.1.8","6.1.9","6.2.0","6.2.1","6.2.2","6.2.3","6.2.4","6.3.0","6.3.1","6.3.2","6.4.0","6.4.1","6.4.2","6.5.0","6.5.1","6.5.2","6.5.3","6.5.4","6.5.5","6.6.0","6.6.1","6.6.2","6.6.3","6.6.4","6.6.5","6.6.6","6.7.0","6.7.1","6.7.10","6.7.11","6.7.12","6.7.13","6.7.14","6.7.15","6.7.16","6.7.17","6.7.18","6.7.19","6.7.2","6.7.20","6.7.21","6.7.22","6.7.23","6.7.24","6.7.25","6.7.26","6.7.27","6.7.28","6.7.29","6.7.3","6.7.30","6.7.31","6.7.32","6.7.33","6.7.34","6.7.35","6.7.36","6.7.37","6.7.38","6.7.39","6.7.4","6.7.40","6.7.41","6.7.42","6.7.43","6.7.44","6.7.45","6.7.46","6.7.47","6.7.48","6.7.49","6.7.5","6.7.50","6.7.51","6.7.52","6.7.53","6.7.54","6.7.55","6.7.56","6.7.6","6.7.7","6.7.8","6.7.9","6.8.0","6.8.1","6.8.10","6.8.11","6.8.12","6.8.2","6.8.3","6.8.4","6.8.5","6.8.6","6.8.7","6.8.8","6.8.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-mrc5-3mm3-45c5/GHSA-mrc5-3mm3-45c5.json"}},{"package":{"name":"backpack/crud","ecosystem":"Packagist","purl":"pkg:composer/backpack/crud"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"7.0.0"},{"fixed":"7.0.36"}]}],"versions":["7.0.0","7.0.1","7.0.10","7.0.11","7.0.12","7.0.13","7.0.14","7.0.15","7.0.16","7.0.17","7.0.18","7.0.19","7.0.2","7.0.20","7.0.21","7.0.22","7.0.23","7.0.24","7.0.25","7.0.26","7.0.27","7.0.28","7.0.29","7.0.3","7.0.30","7.0.31","7.0.32","7.0.33","7.0.34","7.0.35","7.0.4","7.0.5","7.0.6","7.0.7","7.0.8","7.0.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-mrc5-3mm3-45c5/GHSA-mrc5-3mm3-45c5.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"}]}