SolarWinds Orion 攻击与公钥基础设施(PKI)
由于 SolarWinds Orion 攻击属于供应链攻击,且攻击者利用提权实现横向移动等活动,因此该攻击在若干重要层面涉及数字证书与身份认证。本文将重点围绕这些维度展开讨论。
当前,SolarWinds Orion 攻击占据了 IT 新闻周期的核心位置,这一现象事出有因。攻击者通过后门获取了约 18000 家机构的极高权限,受害范围涵盖政府机构、大型企业、技术服务商,甚至包括头部 IT 安全厂商。Sectigo 不在上述受害机构之列,目前也没有证据表明 Sectigo 的系统或运营受到任何影响。
关于本次攻击的分析报道已有很多。由于 SolarWinds Orion 攻击属于供应链攻击,且攻击者利用提权实现横向移动等活动,因此该攻击在若干重要层面涉及数字证书与身份认证。本文将重点围绕这些维度展开讨论。
代码签名
为实施核心攻击,该 APT 组织似乎将恶意代码植入了 SolarWinds Orion 的构建环境,恶意代码随之被纳入已签名的软件构建版本,随常规软件更新分发。由于恶意 DLL 隐藏在合法厂商面向自有软件推送的已签名更新中,受害机构几乎没有可行方法检测到这类植入系统的恶意代码。
我们需要正确理解代码签名的本质,及其在防范恶意软件中的作用。代码签名可确保每个已签名文件与签名时的文件逐比特完全一致,这保证了文件在签名完成后不会被任何主体篡改,包括新增恶意代码。这一能力在开放互联网环境下传输代码时至关重要,可防范代码在传输过程中被拦截、篡改的攻击。
代码签名还包含经过认证的签名方(即文件来源主体)信息,这一特性可有效对抗仿冒攻击——即攻击者使用与真实目标代码完全相同的文件名,伪造恶意文件替换合法文件的攻击行为。
上述两种防护场景均不适用于本次攻击。由于 APT 组织在构建环节之前就已植入恶意代码,最终签名并分发的代码本身已包含恶意 DLL。事实上,如果该 DLL 在签名完成后、分发前被以任何方式移除,更新过程将会失败,因为分发的文件与签名时的文件状态无法完全匹配。
代码签名无法校验已签名代码是否符合签名方的预期,也无法为所签代码的性质或质量提供任何担保或承诺。经公共证书颁发机构(CA)签名的代码,并不代表对应软件编写质量良好、无漏洞、运行高效、无知识产权纠纷,更不代表其行为是善意的。代码签名仅能保证:代码由已知来源签名后,未遭到篡改。
换个角度看,本次事件中构建系统已被恶意攻击者控制。攻击者篡改构建系统以生成恶意代码,而构建系统使用合法的代码签名证书,对其(在不知情情况下生成的)恶意代码执行了合规的签名流程。由于 SolarWinds 客户已在自身环境中配置信任 Orion 产品,包含该恶意代码的、经合法签名的软件更新才得以顺利部署。
SAML
美国国家安全局(NSA)报告指出,攻击者通过 Orion 软件更新获取后门访问权限后,会“滥用身份认证机制”实现后续目标,例如登录云资源。SAML 单点登录联邦就是被滥用的机制之一。在被攻陷的网络中,攻击者可通过访问 Microsoft Active Directory Federation Services (AD FS) 账户的私有存储获取现有私钥,进而伪造 SAML 令牌, impersonate 拥有联邦资源访问权限的合法用户。
公网 SSL/TLS 证书
本次攻击依赖与多个域名的通信实现命令与控制。不出意料,这些域名大多配置了公网信任的域名验证型(DV)SSL/TLS 证书,其中部分证书由 Sectigo 签发。
与代码签名类似,SSL/TLS 证书可保障客户端与服务器之间的通信在传输过程中不被篡改、不被窃听,同时可验证服务器域名的真实身份(OV 或 EV SSL/TLS 证书还会附加额外的组织信息)。需要再次说明的是,SSL/TLS 证书同样无法为使用证书的服务的质量或意图提供任何担保。
MFA
研究人员发现,该 APT 组织使用了绕过 DUO 多因素认证(MFA)防护的技术。攻击者利用非法获取的管理员权限,生成所需的 MFA 验证要素以模拟真实的 MFA 认证流程,从而绕过 MFA 防护机制。
这些绕过手段有一个共同特征:相关防护机制本身在其设计目标范围内均运行正常,但攻击者通过在这些机制的业务流程“上游”植入自身操作,使得这些机制的防护价值失效。
泄露的FTP凭证?
研究人员在GitHub上发现了一组暴露的SolarWinds FTP凭证,密码为Solarwinds123。我们目前无法确认这组泄露的凭证是否被用于此次特定攻击,但无论是否相关,这一事件都足以说明,在当下仍使用简单的用户名/密码登录方式存在极大风险。