NodeJS/playwright/1.3.0-next.1598324536915
A high-level API to automate web browsers
https://www.npmjs.com/package/playwright
Apache-2.0
1 Security Vulnerabilities
Playwright downloads and installs browsers without verifying the authenticity of the SSL certificate
- https://nvd.nist.gov/vuln/detail/CVE-2025-59288
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-59288
- https://github.com/SocketDev/security-research/security/advisories/GHSA-qxm8-4v54-964r
- https://github.com/microsoft/playwright/pull/37532
- https://github.com/microsoft/playwright/commit/72c62d840247d9defd87c6beb0344d456794b570
- https://github.com/microsoft/playwright/releases/tag/v1.55.1
- https://github.com/microsoft/playwright/releases/tag/v1.56.0
- https://github.com/advisories/GHSA-7mvr-c777-76hp
Summary
Use of curl with the -k (or --insecure) flag in installer scripts allows attackers to deliver arbitrary executables via Man-in-the-Middle (MitM) attacks. This can lead to full system compromise, as the downloaded files are installed as privileged applications.
Details
The following scripts in the microsoft/playwright repository at commit bee11cbc28f24bd18e726163d0b9b1571b4f26a8 use curl -k to fetch and install executable packages without verifying the authenticity of the SSL certificate:
packages/playwright-core/bin/reinstall_chrome_beta_mac.shpackages/playwright-core/bin/reinstall_chrome_stable_mac.shpackages/playwright-core/bin/reinstall_msedge_dev_mac.shpackages/playwright-core/bin/reinstall_msedge_beta_mac.shpackages/playwright-core/bin/reinstall_msedge_stable_mac.sh
In each case, the shell scripts download a browser installer package using curl -k and immediately install it:
curl --retry 3 -o ./<pkg-file> -k <url>
sudo installer -pkg /tmp/<pkg-file> -target /
Disabling SSL verification (-k) means the download can be intercepted and replaced with malicious content.
PoC
A high-level exploitation scenario:
- An attacker performs a MitM attack on a network where the victim runs one of these scripts.
- The attacker intercepts the HTTPS request and serves a malicious package (for example, a trojaned browser installer).
- Because
curl -kis used, the script downloads and installs the attacker's payload without any certificate validation. - The attacker's code is executed with system privileges, leading to full compromise.
No special configuration is needed: simply running these scripts on any untrusted or hostile network is enough.
Impact
This is a critical Remote Code Execution (RCE) vulnerability due to improper SSL certificate validation (CWE-295: Improper Certificate Validation). Any user or automation running these scripts is at risk of arbitrary code execution as root/admin, system compromise, data theft, or persistent malware installation. The risk is especially severe because browser packages are installed with elevated privileges and the scripts may be used in CI/CD or developer environments.
Fix
- https://github.com/microsoft/playwright/commit/72c62d840247d9defd87c6beb0344d456794b570
- https://github.com/microsoft/playwright/pull/37532
- https://github.com/microsoft/playwright/releases/tag/v1.56.0
Credit
- This vulnerability was uncovered by tooling by Socket
- This vulnerability was confirmed by @evilpacket
- This vulnerability was reported by @JLLeitschuh at Socket
Disclosure
- September 10th, 2025 - Disclosed to Microsoft privately via https://github.com/microsoft/playwright/security/advisories/GHSA-gx27-2j22-qcx8
- September 11th, 2025 - Reported to Microsoft via MSRC Researcher Portal - https://msrc.microsoft.com/report/vulnerability/VULN-162854
- September 11th, 2025 - Microsoft closed report as
Complete - N/A
- September 18th, 2025 - Following a LinkedIn Post
5458 Other Versions
| Version | License | Security | Released | |
|---|---|---|---|---|
| 1.17.0-next-1636024023000 | Apache-2.0 | 1 | 2021-11-04 - 15:34 | over 4 years |
| 1.17.0-next-alpha-nov-5-2021 | Apache-2.0 | 1 | 2021-11-05 - 00:21 | over 4 years |
| 1.17.0-next-alpha-nov-6-2021 | Apache-2.0 | 1 | 2021-11-06 - 00:22 | over 4 years |
| 1.17.0-next-1636225929000 | Apache-2.0 | 1 | 2021-11-06 - 19:16 | over 4 years |
| 1.17.0-next-alpha-nov-7-2021 | Apache-2.0 | 1 | 2021-11-07 - 00:21 | over 4 years |
| 1.17.0-next-alpha-nov-8-2021 | Apache-2.0 | 1 | 2021-11-08 - 00:22 | over 4 years |
| 1.17.0-next-alpha-nov-9-2021 | Apache-2.0 | 1 | 2021-11-09 - 00:42 | over 4 years |
| 1.17.0-next-1636414979000 | Apache-2.0 | 1 | 2021-11-08 - 23:53 | over 4 years |
| 1.17.0-next-1636423390000 | Apache-2.0 | 1 | 2021-11-09 - 02:12 | over 4 years |
| 1.17.0-next-1636430928000 | Apache-2.0 | 1 | 2021-11-09 - 11:07 | over 4 years |
| 1.17.0-next-1636507311000 | Apache-2.0 | 1 | 2021-11-10 - 02:06 | over 4 years |
| 1.17.0-next-1636502298000 | Apache-2.0 | 1 | 2021-11-10 - 00:11 | over 4 years |
| 1.17.0-next-alpha-nov-10-2021 | Apache-2.0 | 1 | 2021-11-10 - 00:21 | over 4 years |
| 1.17.0-rc1 | Apache-2.0 | 1 | 2021-11-17 - 19:33 | over 4 years |
| 1.17.0-beta-1637106527000 | Apache-2.0 | 1 | 2021-11-16 - 23:53 | over 4 years |
| 1.17.0-beta-1637167411000 | Apache-2.0 | 1 | 2021-11-17 - 16:46 | over 4 years |
| 1.17.0-beta-1637174719000 | Apache-2.0 | 1 | 2021-11-17 - 18:48 | over 4 years |
| 1.17.0-beta-1637185435000 | Apache-2.0 | 1 | 2021-11-17 - 21:47 | over 4 years |
| 1.17.0-beta-1637287804000 | Apache-2.0 | 1 | 2021-11-19 - 02:14 | over 4 years |
| 1.17.0-beta-1637368446000 | Apache-2.0 | 1 | 2021-11-20 - 00:38 | over 4 years |
| 1.17.0-beta-1637607601000 | Apache-2.0 | 1 | 2021-11-22 - 19:03 | over 4 years |
| 1.17.0-beta-1637696328000 | Apache-2.0 | 1 | 2021-11-23 - 19:42 | over 4 years |
| 1.17.0-beta-1637696371000 | Apache-2.0 | 1 | 2021-11-23 - 19:43 | over 4 years |
| 1.17.0-beta-1637697877000 | Apache-2.0 | 1 | 2021-11-23 - 20:07 | over 4 years |
| 1.17.0-beta-1638222602000 | Apache-2.0 | 1 | 2021-11-29 - 21:53 | over 4 years |
| 1.17.0-beta-1638285466000 | Apache-2.0 | 1 | 2021-11-30 - 15:21 | over 4 years |
| 1.17.0-beta-1638356200000 | Apache-2.0 | 1 | 2021-12-01 - 10:59 | over 4 years |
| 1.17.0-beta-1638396143000 | Apache-2.0 | 1 | 2021-12-01 - 22:05 | over 4 years |
| 1.17.0-beta-1638387664000 | Apache-2.0 | 1 | 2021-12-01 - 19:44 | over 4 years |
| 1.17.0-beta-1638401430000 | Apache-2.0 | 1 | 2021-12-01 - 23:33 | over 4 years |
| 1.15.2-1633455481000 | Apache-2.0 | 1 | 2021-10-05 - 17:40 | over 4 years |
| 1.15.1-1633440750000 | Apache-2.0 | 1 | 2021-10-05 - 13:35 | over 4 years |
| 1.15.1-1633391047000 | Apache-2.0 | 1 | 2021-10-04 - 23:53 | over 4 years |
| 1.15.1-1633032976000 | Apache-2.0 | 1 | 2021-09-30 - 20:19 | over 4 years |
| 1.15.0-1633020276000 | Apache-2.0 | 1 | 2021-09-30 - 16:47 | over 4 years |
| 1.15.0-1632494029000 | Apache-2.0 | 1 | 2021-09-24 - 14:36 | over 4 years |
| 1.15.0-1632430084000 | Apache-2.0 | 1 | 2021-09-23 - 20:50 | over 4 years |
| 1.15.0-1632420841000 | Apache-2.0 | 1 | 2021-09-23 - 18:16 | over 4 years |
| 1.15.0-1632336523000 | Apache-2.0 | 1 | 2021-09-22 - 20:25 | over 4 years |
| 1.15.0-1632328434000 | Apache-2.0 | 1 | 2021-09-22 - 16:57 | over 4 years |
| 1.15.0-1632321891000 | Apache-2.0 | 1 | 2021-09-22 - 14:48 | over 4 years |
| 1.15.0-1632254231000 | Apache-2.0 | 1 | 2021-09-21 - 19:59 | over 4 years |
| 1.15.0-1632253285000 | Apache-2.0 | 1 | 2021-09-21 - 19:44 | over 4 years |
| 1.15.0-1631817028000 | Apache-2.0 | 1 | 2021-09-16 - 18:32 | over 4 years |
| 1.15.0-1631797286000 | Apache-2.0 | 1 | 2021-09-16 - 13:04 | over 4 years |
| 1.16.3 | Apache-2.0 | 1 | 2021-11-02 - 07:22 | over 4 years |
| 1.16.2 | Apache-2.0 | 1 | 2021-10-27 - 18:32 | over 4 years |
| 1.16.1 | Apache-2.0 | 1 | 2021-10-22 - 23:10 | over 4 years |
| 1.16.0 | Apache-2.0 | 1 | 2021-10-21 - 19:13 | over 4 years |
| 1.16.0-next-alpha-sep-17-2021 | Apache-2.0 | 1 | 2021-09-17 - 00:17 | over 4 years |
