CVE-2026-27806Fleet是一款开源设备管理软件。在4.81.1版本之前,其Orbit代理中的FileVault磁盘加密密钥轮换流程存在严重安全漏洞。该漏洞源于Orbit代理在处理本地用户密码时,通过GUI对话框收集密码后,直接将其插入到通过exec.Command执行的Tcl/expect脚本中。由于密码被插入到Tcl大括号引用的`send {%s}`命令中,如果密码包含特殊字符`}`,将导致引号提前结束,从而允许攻击者注入任意Tcl命令。鉴于Orbit代理以root权限运行,该漏洞可使本地低权限用户利用精心构造的密码成功提权至root,从而完全控制受影响的系统。攻击者无需用户交互即可利用此漏洞,对系统的机密性、完整性和可用性造成严重影响。
该漏洞属于典型的命令注入漏洞,具体发生在Fleet的Orbit代理组件中。Orbit代理负责管理设备的FileVault磁盘加密密钥轮换,此过程需要获取本地用户密码。在受影响版本中,代码使用Go语言的`exec.Command("expect", "-c", script)`来执行expect脚本以自动化输入密码。核心缺陷在于脚本生成逻辑缺乏完善的输入验证,直接将用户提供的密码拼接到Tcl脚本的`send {%s}`指令中。
Tcl语言使用大括号`{}`来界定不进行变量替换的字符串块。当用户密码中出现右大括号`}`时,Tcl解释器会认为前面的字符串块已经结束。攻击者可以在`}`后追加恶意的Tcl命令。由于expect脚本由具有root权限的Orbit进程执行,这些注入的命令也将以root身份运行。
利用场景如下:攻击者首先需要拥有系统的本地低权限账户。当系统触发密钥轮换流程时,攻击者将其账户密码修改为包含恶意Tcl载荷的字符串,例如`password} { exec /bin/bash } {`。当Orbit代理尝试使用该密码解锁密钥时,脚本解析错误导致执行了注入的命令,从而实现了从低权限用户到root权限的垂直权限提升。此漏洞展示了在调用系统命令时未对特殊字符进行转义的危险性。