CVE-2025-59840Vega是一个可视化语法库,用于创建、保存和共享交互式可视化设计。CVE-2025-59840是一个严重的安全漏洞,存在于Vega 6.2.0之前的版本中。该漏洞允许攻击者在特定条件下执行任意JavaScript代码,即使应用程序启用了"安全模式"的expressionInterpreter也无法防护。漏洞的触发需要满足两个条件:一是应用程序将vega库和vega.View实例附加到全局window对象(类似于Vega Editor的调试模式),二是应用程序允许用户提供自定义的Vega JSON定义而非仅从源代码中获取JSON。这种组合使得攻击者可以通过恶意构造的Vega JSON来注入和执行任意JavaScript代码,对应用程序的机密性和完整性造成严重威胁。
漏洞根源在于Vega在解析和执行用户提供的JSON可视化定义时存在安全问题。当vega.View实例被附加到全局window对象时,攻击者可以通过DOM操作或其他方式注入恶意构造的Vega JSON规范。该JSON规范中包含的表达式或配置会被vega表达式解释器执行,而即使用户启用了safe mode的expressionInterpreter,攻击者仍然可以绕过安全限制。具体来说,攻击者可以利用Vega的表达式求值机制,通过精心构造的JSON payload注入JavaScript代码。例如,在图表的数据转换、格式化或交互逻辑中嵌入恶意表达式,当Vega解析这些JSON定义时,嵌入的JavaScript代码将被执行。由于CVSS向量显示需要用户交互(UI:R),攻击通常需要诱导用户打开包含恶意Vega JSON的页面或触发相关功能。攻击成功后,攻击者可在受害者浏览器上下文中执行任意JavaScript代码,窃取敏感信息、劫持会话或进行其他恶意操作。