Playwright SSL证书验证漏洞分析:高危远程代码执行风险

本文详细分析了Playwright浏览器安装过程中的SSL证书验证漏洞CVE-2025-59288,攻击者可通过中间人攻击替换浏览器安装包,导致系统完全被控制,影响版本低于1.55.1,已发布修复版本。

CVE-2025-59288:Playwright下载安装浏览器时未验证SSL证书真实性

漏洞详情

包管理器: npm
受影响包: playwright
受影响版本: < 1.55.1
修复版本: 1.55.1

漏洞描述

摘要

安装脚本中使用curl的-k(或–insecure)标志,允许攻击者通过中间人(MitM)攻击传递任意可执行文件。由于下载的文件作为特权应用程序安装,这可能导致系统完全被控制。

详细说明

在microsoft/playwright存储库的bee11cbc28f24bd18e726163d0b9b1571b4f26a8提交中,以下脚本使用curl -k获取并安装可执行包,而未验证SSL证书的真实性:

  • packages/playwright-core/bin/reinstall_chrome_beta_mac.sh
  • packages/playwright-core/bin/reinstall_chrome_stable_mac.sh
  • packages/playwright-core/bin/reinstall_msedge_dev_mac.sh
  • packages/playwright-core/bin/reinstall_msedge_beta_mac.sh
  • packages/playwright-core/bin/reinstall_msedge_stable_mac.sh

在每个案例中,shell脚本使用curl -k下载浏览器安装包并立即安装:

1
2
curl --retry 3 -o ./<pkg-file> -k <url>
sudo installer -pkg /tmp/<pkg-file> -target /

禁用SSL验证(-k)意味着下载可能被拦截并替换为恶意内容。

概念验证

高级利用场景:

  1. 攻击者在受害者运行这些脚本的网络中执行MitM攻击
  2. 攻击者拦截HTTPS请求并提供恶意包(例如,被篡改的浏览器安装程序)
  3. 由于使用了curl -k,脚本在没有任何证书验证的情况下下载并安装攻击者的有效载荷
  4. 攻击者的代码以系统权限执行,导致完全被控制

无需特殊配置:只需在任何不受信任或敌对网络上运行这些脚本就足够了。

影响

由于不正确的SSL证书验证(CWE-295:不当证书验证),这是一个严重的远程代码执行(RCE)漏洞。任何运行这些脚本的用户或自动化系统都面临以root/admin权限执行任意代码、系统被控制、数据被盗或持久恶意软件安装的风险。风险尤其严重,因为浏览器包以提升的权限安装,且这些脚本可能在CI/CD或开发环境中使用。

修复

致谢

  • 该漏洞由Socket的工具发现
  • 该漏洞由@evilpacket确认
  • 该漏洞由Socket的@JLLeitschuh报告

披露时间线

  • 2025年9月10日 - 通过https://github.com/microsoft/playwright/security/advisories/GHSA-gx27-2j22-qcx8向微软私下披露
  • 2025年9月11日 - 通过MSRC研究员门户向微软报告 - https://msrc.microsoft.com/report/vulnerability/VULN-162854
  • 2025年9月11日 - 微软将报告关闭为"Complete - N/A"
  • 2025年9月18日 - 在LinkedIn帖子后跟进

参考链接

安全评分

严重程度: 高
CVSS总体评分: 8.7/10

CVSS v4基础指标

可利用性指标:

  • 攻击向量: 网络
  • 攻击复杂度: 高
  • 攻击要求: 存在
  • 所需权限: 高
  • 用户交互: 主动

脆弱系统影响指标:

  • 机密性: 高
  • 完整性: 高
  • 可用性: 高

后续系统影响指标:

  • 机密性: 高
  • 完整性: 高
  • 可用性: 高

弱点

弱点: CWE-347 - 加密签名验证不当
产品未验证或错误验证数据的加密签名。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计