CVE-2026-35580Emissary是一个基于P2P的数据驱动工作流引擎。在8.39.0版本之前,其GitHub Actions工作流文件中存在Shell注入漏洞。该漏洞源于将用户控制的workflow_dispatch输入直接通过${{ }}表达式语法插入到Shell命令中。拥有仓库写入权限的攻击者可以利用此漏洞注入任意Shell命令,导致仓库污染和供应链攻击,影响所有下游用户。该问题已在8.39.0版本中修复。
该漏洞的根本原因在于GitHub Actions工作流配置中存在不安全的表达式插值。在Emissary项目受影响的版本中,开发者在定义工作流时,使用了workflow_dispatch事件来接收外部输入,并直接通过${{ github.event.inputs.xxx }}的语法将用户输入拼接到Shell执行命令中。由于GitHub Actions在将${{ }}表达式替换为实际值后,会将结果字符串传递给Shell解释器执行,且未对特殊字符进行转义,这导致了经典的命令注入漏洞。攻击者只需拥有仓库的写入权限,即可利用分号(;)、反引号(`)或$()等Shell元字符构造恶意Payload。一旦工作流被触发,这些恶意命令便会在Runner环境中执行。这不仅允许攻击者窃取Secrets、修改代码,还能进行供应链投毒,将恶意代码植入后续的发布版本中,从而对下游所有依赖该软件的用户造成广泛的安全威胁。