High severity8.6OSV Advisory· Published Dec 13, 2024· Updated Apr 29, 2026
CVE-2024-21544
CVE-2024-21544
Description
Versions of the package spatie/browsershot before 5.0.1 are vulnerable to Improper Input Validation due to improper URL validation in the setUrl method. An attacker can exploit this vulnerability by using leading whitespace (%20) before the file:// protocol, resulting in Local File Inclusion, which allows the attacker to read sensitive files on the server.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
spatie/browsershotPackagist | < 5.0.1 | 5.0.1 |
Affected products
1- Range: 0.1.0, 0.1.1, 0.1.2, …
Patches
1fae8396641b9make sure urls with leading spaces are not accepted
4 files changed · +9 −3
composer.json+2 −2 modified@@ -29,10 +29,10 @@ "ext-fileinfo": "*" }, "require-dev": { - "pestphp/pest": "^1.20", + "pestphp/pest": "^3.0", "spatie/image": "^3.6", "spatie/pdf-to-text": "^1.52", - "spatie/phpunit-snapshot-assertions": "^4.2.3" + "spatie/phpunit-snapshot-assertions": "^4.2.3|^5.0" }, "autoload": { "psr-4": {
.github/workflows/run-tests.yml+1 −1 modified@@ -9,7 +9,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - php: [8.3, 8.2] + php: [8.4, 8.3, 8.2] stability: [prefer-lowest, prefer-stable] name: P${{ matrix.php }} - ${{ matrix.stability }} - ${{ matrix.os }}
src/Browsershot.php+2 −0 modified@@ -257,6 +257,8 @@ public function waitForSelector(string $selector, array $options = []): static public function setUrl(string $url): static { + $url = trim($url); + if (str_starts_with(strtolower($url), 'file://') || str_starts_with(strtolower($url), 'file:/')) { throw FileUrlNotAllowed::make(); }
tests/BrowsershotTest.php+4 −0 modified@@ -56,6 +56,10 @@ Browsershot::url('file://test'); })->throws(FileUrlNotAllowed::class); +it('will not allow a file url that has leading spaces', function () { + Browsershot::url(' file://test'); +})->throws(FileUrlNotAllowed::class); + it('will not allow html to contain file://', function () { Browsershot::html('<h1><img src="file://" /></h1>'); })->throws(HtmlIsNotAllowedToContainFile::class);
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-g2r4-phv7-5fgvghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2024-21544ghsaADVISORY
- github.com/spatie/browsershot/blob/1e212b596c104138550ed4ef1b9977d8df570c67/src/Browsershot.php%23L258-L269nvdWEB
- github.com/spatie/browsershot/commit/fae8396641b961f62bd756920b14f01a4391296envdWEB
- security.snyk.io/vuln/SNYK-PHP-SPATIEBROWSERSHOT-8496745nvdWEB
News mentions
0No linked articles in our index yet.