Home Assistant能源仪表板存储型XSS漏洞深度分析

本文详细分析了Home Assistant能源仪表板中存在的存储型XSS安全漏洞CVE-2025-62172,攻击者可通过恶意命名的能源实体实施跨站脚本攻击,影响所有查看能源仪表板的用户。

Home Assistant能源仪表板存储型XSS漏洞分析

漏洞概述

CVE ID: CVE-2025-62172
GHSA ID: GHSA-mq77-rv97-285m
严重程度: 高危(CVSS评分8.5)
影响版本: Home Assistant 2025.1.0 至 2025.10.1
修复版本: Home Assistant 2025.10.2

漏洞详情

漏洞描述

经过身份验证的用户可以为能源实体添加恶意名称,当任何能够查看能源仪表板的用户将鼠标悬停在信息点上时(如下图中的蓝色条形图),就会遭受跨站脚本攻击。

另一种更具影响力的攻击场景是,实体从实体提供者(如能源提供商Tibber)处获得恶意名称,并通过默认名称的方式被利用。

技术细节

该漏洞存在于能源仪表板的图形视图组件中,当渲染包含HTML实体的实体名称时,未能正确进行转义处理。

漏洞代码位置:

1
2
// 存在漏洞的代码行
return `${title}${params.marker} ${params.seriesName}: ${value}`;

其中params.seriesName参数是易受攻击的值。

攻击原理

  1. 实体名称处理: 系统仅将实体ID中的下划线替换为空格(computeObjectId(entityId).replace(/_/g, " ")
  2. 名称渲染: 任何电力实体都会使用其名称,如果找不到特定名称,则回退到友好名称
  3. 漏洞触发: 当用户在能源仪表板中悬停数据点时,恶意脚本代码会被执行

复现步骤

  1. 设置一个新的能源提供商,包含价格传感器
  2. 为价格传感器设置恶意名称
  3. 配置能源仪表板从该价格传感器获取数据
  4. 查看数据并悬停在数据点上,代码即可执行

影响范围

该漏洞可通过互联网进行利用,攻击者可以通过能源提供商(如Tibber)使用恶意名称,并依赖Home Assistant中的默认命名机制。这意味着:

  • 恶意员工或能够访问电力提供商系统的攻击者可以通过电力提供商攻击您的Home Assistant实例
  • 攻击不需要用户交互以外的其他条件
  • 影响所有查看能源仪表板的用户

相关代码文件

  • src/panels/lovelace/cards/energy/hui-energy-devices-graph-card.ts (第110行)
  • src/panels/lovelace/cards/energy/hui-energy-usage-graph-card.ts (第467-478行)
  • src/data/recorder.ts (第329-339行)
  • src/common/entity/compute_state_name.ts

安全建议

建议所有使用受影响版本的用户立即升级到Home Assistant 2025.10.2或更高版本,以修复此安全漏洞。

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