您当前的位置:   首页 > 新闻中心
SolarWinds攻击和代码签名的最佳做法
发布时间:2021-03-10 09:01:55   阅读次数:

SolarWinds攻击和代码签名的最佳做法(图1)

自从宣布SolarWinds供应链攻击以来,Crowdstrike、FireEye、Microsoft、Symantec、SolarWinds和许多其他工具已经进行了深入的分析,以了解攻击在SolarWinds内部和目标网络中的工作方式。在这里,我们重点关注代码签名过程,该过程似乎在SolarWinds上失败了,但是如果将它们实施并提高到更高的标准,则可能可以减轻遭受攻击的风险。


概括一下到目前为止的情况:入侵者将所谓的Sunspot恶意软件放置到SolarWinds系统中。Sunspot恶意软件用于监视和劫持SolarWindsOrion应用程序的构建过程。这样,在编译时,源代码文件内容被替换为包含Sunburst恶意软件的版本。


最终的可执行文件(称为SolarWindsOrion.Core.BusinessLayer.dll)已由SolarWinds在2020年3月24日进行了数字签名。随着Orion在2020年3月至2020年6月之间的更新,Sunburst恶意软件随后渗透到18,000多个政府和专用网络中。该恶意软件在受感染的网络上收集信息,并将数据发送到远程服务器。在选定的目标上,Sunburst下载并安装了Teardrop或Raindrop恶意软件,这些恶意软件随后使攻击者可以发起人为攻击。


作为渗透网络中的动手键盘攻击的一部分,攻击者利用X.509证书创建对网络的合法OAuth访问,或者伪造SAML令牌并用合法的、受感染的证书签名,以模拟受信任的用户和帐户。 


代码签名

显然,SolarWinds拥有适当的代码签名,并且可能遵循了一些最佳实践,例如: 

  • 在FIPS 140-2 3级硬件安全模块HSM)中保存代码签名密钥,以确保所有密钥材料的最严格的安全性,  

  • 签名过程的安全工作流,包括多个用户,签名前需要进行必要的批准(“认可的代码签名”), 

  • 使用策略从中央服务(策略引擎)严格控制谁可以使用哪些键(包括 参数选择,以及

  • 保留明显的篡改日志,以记录谁使用了密钥以及何时何地使用密钥。


据报道,在签名被篡改的代码时,SolarWinds的代码签名证书没有受到泄漏。(不过请注意,SolarWinds正在对产品进行数字签名,并且现有证书计划于2021年3月8日撤销。)


SolarWinds失败的地方似乎是企业内部供应链的完整性:源代码存储库和代码签名系统之间没有耦合。在编译器读取源代码之前,已将错误代码注入源代码控制之外。如果代码签名系统不知道其签名内容,则将签名密钥固定在HSM中无济于事。 


为了进行健壮的代码签名,代码签名系统必须验证其签名内容与源代码存储库中的内容匹配:

  • 开发人员签入的任何代码或代码修订版都必须由该开发人员使用其自己的签名密钥进行数字签名。 

  • 在构建过程中,将验证所有开发人员签名,从而对用于构建最终产品的每个模块执行完整性检查。这样可以确保仅使用合法代码。 

  • 只有成功完成所有这些检查,才按照常规代码签名方案对最终版本进行签名。 


这将确保开发人员签入的源代码的完整性,直到最终构建和交付的链接,并防止网络中的任何对手插入他们自己的恶意代码。


HSM与代码签名

在现代IT组织大规模实施代码签名时,我们会遇到以下一些问题:

  • 不利用硬件保护与代码签名证书绑定的敏感私钥。开发人员经常将代码签名证书存储在文件系统中,工作站或构建服务器上,甚至在开发人员之间通过电子邮件发送,而不是安全地存储在HSM中。

  • 不执行围绕使用代码签名证书的批准过程和基于角色的访问控制。随着人员的变动和变化,很难跟踪代码签名证书的住处以及有权访问的人。

  • 地理位置分散的开发团队为安全访问代码签名证书增加了另一个难度。这种广泛的公司边界使得在不暴露私钥和冒着伴随软件代码的数字签名的保证等级风险的情况下启用代码签名变得更加困难。

  • 在效率方面,确保代码签名证书的安全还可以为开发人员创建额外的步骤,从而导致构建管道或发布周期的延迟。这些延迟通常是由访问代码签名证书或执行签名操作本身所花费的时间造成的。

  • 最后,也许是最重要的一点是,很难跟踪和记录使用代码签名证书进行审核和合规性所发生的一切。


揽阁信息所提供的基于HSM的解决方案,已经与众多知名厂商进行了底层的集成适配,可以有效的实现对代码的签名工作。


代码签名证明签名的软件是合法的,来自一个已知的软件供应商,并且该代码自发布以来没有被篡改。 代码签名可防止用户由于安全警告消息,恶意更改合法代码以及供应商作者的身份被盗取而放弃应用程序的安装。


代码签名证书使用唯一的加密散列来将发布者的身份绑定到软件。 与未签名代码一起显示的安全警告将替换为包含软件发布商信息的通知,从而防止用户放弃安装和提高下载速度。 签名代码为安装过程增加了一个重要的信任层。


GlobalSign 是一个具有很高可信度并且发展良好的证书管理机构和SSL 提供商。 作为公众信任服务行业的领头羊,GlobalSign 自1996 年起开始颁发可信赖的数字证书――从一些已经广泛普及的公众根中提供公众信任。这些可信任的根能够为所有的操作系统、主要网站浏览器、服务器、e-mail 客户端以及互联网应用程序等识别,而且还包括了一些别的装置,如智能电话、 Palm 以及主要的 PDA 和移动电话。


GlobalSign代码签名证书被所有平台上的开发人员使用来对通过Internet分发的应用程序和软件进行数字签名。 代码签名本质上提供与收缩包装的CD相同的保证,因为签名的代码包括发布者的名称以及该代码自发布以来未被篡改的保证。 任何人从互联网下载软件都可以决定是否信任该软件。


GlobalSign签发的证书已经与SafeNet Luna HSM进行了完美的集成,并拥有众多成功案例。



揽阁信息可提供的部分安全产品和解决方案信息

联系揽阁信息,您可以获取到更多满足全球合规性要求的信息安全产品资料,以及相关的整体解决方案的相关资料。如:


您还可以得到揽阁信息所提供的优质服务。

揽阁信息 · 值得您信赖的信息安全顾问!


相关阅读

购买咨询电话
021-54410609