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

本文详细分析Home Assistant能源仪表板中存在的存储型XSS漏洞CVE-2025-62172,涵盖漏洞原理、影响版本、攻击场景、源代码定位和修复方案,涉及前端安全与输入验证机制。

CVE-2025-62172:Home Assistant能源仪表板存储型XSS漏洞

漏洞概述

Home Assistant在能源仪表板中存在存储型跨站脚本(XSS)漏洞,认证用户可通过为能源实体设置恶意名称,对查看能源仪表板的任何用户实施XSS攻击。

受影响版本

  • 受影响版本:>= 2025.1.0, <= 2025.10.1
  • 已修复版本:2025.10.2

漏洞详情

攻击场景

  1. 用户自定义攻击:认证用户可为能源实体设置包含恶意脚本的名称
  2. 供应商攻击:能源实体提供商(如Tibber)设置恶意默认名称
  3. 触发条件:用户在能源仪表板中悬停查看数据点时执行恶意代码

技术分析

漏洞位于前端代码的模板渲染部分,具体位置:

1
2
// 漏洞代码位置
return `${title}${params.marker} ${params.seriesName}: ${value}`;

其中 params.seriesName 参数未经过适当的HTML转义处理,直接渲染到页面中。

源代码追踪

  1. 数据流路径

    • hui-energy-usage-graph-card.ts 第467-478行获取实体名称
    • 调用 getStatisticLabel() 函数
    • 最终调用 computeStateName() 获取实体显示名称
  2. 名称处理

    • 实体ID中的下划线被替换为空格
    • 未对HTML特殊字符进行转义处理

漏洞复现步骤

  1. 设置新的能源提供商并创建价格传感器
  2. 为价格传感器设置恶意名称(包含XSS payload)
  3. 配置能源仪表板使用该价格传感器数据
  4. 查看数据并在数据点上悬停触发代码执行

影响评估

攻击向量

  • 攻击途径:网络远程攻击
  • 权限要求:低权限认证用户
  • 用户交互:需要用户主动悬停操作

潜在影响

  • 通过电力提供商(如Tibber)的默认名称实施远程攻击
  • 恶意员工或入侵者可通过能源提供商攻击Home Assistant实例
  • 影响范围:机密性、完整性、可用性均受到高度威胁

CVSS评分

  • 总体评分:8.5(高危)
  • 攻击向量:网络(Network)
  • 攻击复杂度:低(Low)
  • 权限要求:低(Low)
  • 用户交互:需要(Active)

修复建议

建议所有Home Assistant用户立即升级到2025.10.2或更高版本,该版本已对能源仪表板中的实体名称输出进行了适当的HTML转义处理。

参考链接

  • GHSA-mq77-rv97-285m
  • NVD漏洞详情:CVE-2025-62172
  • Home Assistant前端相关源代码文件
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计