2023 年 XNUMX 月下旬,安全研究人员曝光了威胁行为者的 复杂的软件供应链攻击 3CX的商务通讯软件,主要是该公司的语音和视频通话桌面应用程序。研究人员警告说,该应用程序在某种程度上被木马化了,使用它可能会使组织面临威胁行为者可能实施的渗透计划。这次攻击被称为“Smooth Operator”,有证据表明该攻击已经持续了数月。
那么究竟发生了什么,使用这个木马版本如何让您面临风险,以及如何通过使用软件签名和验证来防止这种情况发生?
首先,什么是 3CX?
3CX 是一种基于软件的开放标准 IP PBX(专用交换机),取代了传统的硬件 PBX。它旨在允许企业使用 VoIP(互联网协议语音)技术拨打和接听电话,该技术通过互联网传输语音通信。 3CX 还包括视频会议、在线状态、即时消息等高级功能,并且可以部署在本地或云端。 Windows、macOS 和 Linux 只是可使用该应用程序的几个流行操作系统。此外,借助 Chrome 扩展,可以通过浏览器访问该客户端,该客户端甚至还有 PWA 版本,并且可以作为 Android 和 iOS 设备的移动应用程序使用。
您可以从 3CX 网站了解软件供应链攻击的潜在影响,该网站拥有 600,000 家公司使用其应用程序,每日用户超过 12 万。
抢先一睹攻击:您需要了解的内容
这有点复杂,所以我们将其分解为几个步骤:
- 你下载一个 桌面应用程序的木马版本,或者您已经安装了它,只需使用木马版本进行更新即可。
- 3CXDesktopApp.exe 可执行文件会加载名为 ffmpeg.dll 的恶意动态链接库 (DLL)。
- ffmpeg.dll 用于从 d3dcompiler_47.dll 中提取加密的有效负载并执行它。
- 然后,恶意软件会下载 GitHub 上托管的看似无辜的图标文件,其中包含附加到图像末尾的 Base64 编码字符串。
- 然后,编码数据被解码并用于下载另一个阶段,其中包含后门连接的加密 C&C 服务器,以便检索可能的最终有效负载。
- 在最后阶段,信息窃取器功能被付诸实践,包括从 Chrome、Edge、Brave 和 Firefox 浏览器收集系统数据和浏览器数据。这可能包括查询“地点”表中的浏览历史记录和信息,以及可能查询“历史记录”表。
最初, 3CX 淡化了这次攻击,但后来承认这是一个真正的威胁,并建议按照其具体说明卸载并重新安装该应用程序,同时使用 PWA 版本,直到该公司设法解决该事件并减轻影响。
另一个需要记住的非常重要的因素是,妥协包括用于签署木马二进制文件的代码签名证书。嗯,不完全是——它实际上使用了一个名为 CVE-2013-3900 (最初发布于 2013 年,但于 2022 年更新,并于本周再次更新) 出现 合法签署。
似曾相识:这以前发生过
如果这个故事是一个 3CX木马版本听起来很熟悉,因为它以前发生过.
在这种情况下,它是你不清楚公司使用的开源上游库是否被感染,或者实际的攻击是否破坏了公司的开发环境。
在其他著名的攻击中,从“Kingslayer”(2016 年)到“CCleaner”(2017 年)、“VestaCP”(2018 年)、“WIZVERA VeraPort”(2020 年),一直到“SolarWinds”(2020 年),它都是常见的威胁行为者尝试破坏公司的服务器、构建环境或其实际的可下载可执行文件。毕竟,将不良和危险的东西伪装成您可以信任的东西是让人们信任并下载您的有效负载的好方法。
这是定义的一部分 软件供应链攻击 – 攻击者破坏了软件供应链,向大量受害者分发恶意软件。在这些著名案例中,攻击者都能够将恶意代码注入到合法软件包中,然后分发给用户。攻击者通常能够通过破坏受信任的软件供应商或提供商(例如软件更新服务器或代码签名证书)来实现此目的。
通过让毫无戒心的客户下载合法应用程序的修改版本,攻击者基本上可以隐藏其中的几乎所有内容。
这就是主要问题——“毫无戒心”。毕竟,可执行文件、二进制文件或映像来自创建公司,显然得到了它的批准,甚至还包含签名证书。客户还能做什么?他们应该打电话给公司来验证每次更新吗?扫描代码(如果有)是否存在后门?这是荒谬和不现实的。但有 is 可以做的事情。
如何在证书之外添加信任层?
提出的模型 相当简单,并且基于与代码签名证书相同的想法。代码签名证书是由第三方颁发的数字证书,用于对软件或代码进行数字签名。当软件使用代码签名证书进行签名时,用户可以在安装或执行软件之前验证软件的真实性和完整性。
签名证书由受信任的第三方颁发 证书颁发机构(CA),谁验证软件发行者的身份和软件代码的完整性。证书颁发机构使用加密算法创建软件的数字签名,然后将其包含在签名的代码中。当用户尝试安装或执行软件时,他们的系统将检查数字签名以确保其与证书颁发机构生成的签名匹配。如果签名匹配,则该软件被认为是真实的,并且自签名以来未被篡改。
该系统基于公钥加密技术,也称为非对称加密技术 - 一种使用两个不同密钥(公钥和私钥)来加密和解密数据的加密方法。在代码签名的上下文中,私钥-公钥对用于对软件和代码进行签名。
在此过程中,软件发布者生成私钥-公钥对,其中私钥保密,公钥可供其他人使用。然后,软件发布者使用他们的私钥来创建他们想要签名的软件或代码的数字签名。这个数字签名是通过运行软件或代码通过数学算法生成的哈希值,然后用发布者的私钥对得到的哈希值进行加密。
当用户下载签名的软件或代码时,他们的系统使用软件发行商的公钥来解密数字签名并验证它是否与下载的软件或代码的哈希值匹配。如果数字签名有效,则用户可以确信软件或代码自软件发布者签名以来没有被篡改。
基于这个简单的概念,建议的补救措施是直接使用公司密钥或构建管道密钥对每个新版本、二进制文件和映像进行签名,并仅要求用户在下载或更新软件时验证签名。
当然,事情并不总是那么简单。如果坏人已经渗透到构建服务器,那么在那里签署构建就已经毫无意义了。如果关键基础设施遭到破坏,那么整个行动同样毫无意义。
但是,要求用户验证签名(可以自动完成的快速而简单的事情)是帮助防止下一次软件供应链攻击所付出的很小的代价。
但是等等,您可能会说,如果实际上是上游的开源库是污染源怎么办?在这种情况下,签署构建再次毫无意义,因为妥协的代码是“内置的”。
这是我们需要开始考虑基于签名和验证这些签名的信任生态系统的地方。如果这些开源包经过签名,并且在将其合并到公司代码中时验证了签名,则可能会降低违规的可能性。
抄写员的作用
刻划式打标系统 已经实现了一个名为 瓦林特 使您能够 签名并验证 文件、文件夹和图像。无需维护复杂的 PKI 系统,该工具实现了一种新颖的方法,使用您已经建立的经过验证的身份(例如您的 Google、Microsoft、GitHub 或 AWS 身份)来签署所需的工件。您稍后可以使用相同的工具来验证工件是否已签名以及用于签名的身份是什么。
假设您的构建管道生成一个容器映像作为最终工件。创建该映像后,您应该对其进行签名并将签名版本上传到存储库,您的客户可以在其中下载它。一旦签名,该图像就无法再修改——它已被锁定。任何想要的人都可以检查它是否已签名以及签名身份是否与公司发布的内容相符。
该工具只是通过实施该工具所授予的功能的一部分 抄写员 SaaS 解决方案 为您的组织。为了提高您的软件供应链安全性和整体透明度,您有充分的理由去查看 Scribe 可以为您提供什么。
此内容由领先的端到端软件供应链安全解决方案提供商 Scribe Security 为您提供 - 为整个软件供应链中的代码工件以及代码开发和交付流程提供最先进的安全性。 了解更多