5.3 用户软件

用户软件与设备固件或用于管理网络和安全的企业级产品相比,往往带来截然不同的视角。通常情况下,这些软件被认为不是关键性的,因此常常未能引起足够的关注。然而,用户软件和常见工具却经常成为攻击的目标。考虑到任何软件都在用户许可下运行,并且许多组织仍然允许用户以本地管理员权限运行软件,这就表明,即使软件本身不需要管理员功能,也可以具备管理员权限。

作为行政命令14028的一部分,NIST提出了关键软件的定义,旨在确保新的软件物料清单(SBOM)要求仅限于最关键的应用程序。这在表面上是合理的,直到你意识到,软件本身并不关键,但其使用方式可能是关键的。NIST将关键软件定义为:

■设计为以提升的权限运行或管理权限的软件

■具有对网络或计算资源直接或特权访问的软件

■设计为控制对数据或操作技术访问的软件

■执行对信任至关重要功能的软件(来源:www.nist.gov/itl/executive-order-improving-nations-cybersecurity/critical-software-definition-faqs#Ref_FAQ3)

■在具有特权访问的情况下操作超出正常信任边界的软件

像Adobe Reader或Notepad++这样的用户软件实际上不符合上述任何一个标准,但在特定的威胁场景下,比如用户经常解析和查看来自不可信来源的外部文档,这些软件可能引入风险或成为攻击向量。特别是Adobe经常在钓鱼攻击方案中被妥协,尽管它可能不符合关键软件的要求,但同样提供了攻击的可信路径。

对这些用户软件而言,最大的挑战可能在于应对这些威胁所需的巨大范围和可扩展性。2021年12月Log4j漏洞披露后,本书的一位作者收到了一份包含超过一百万个CPE(通用产品版本)的列表,并被问及“其中有多少个容易受到log4shell漏洞的影响?”这个机构意识到,无论软件用于何种用途,只要存在这种漏洞,就像log4shell漏洞利用所展示的那样,可能轻易扩展到更为关键的目标上。

这个例子很好地展示了供应链攻击如何以复杂的方式突破边界。这些攻击并不是直接的,而是通过信任内部用户并未正确验证其行为、宽松的访问特性等方式,即使是最无害的软件也可能为攻击开辟一条通道。我们该如何应对这些挑战呢?在达到这个目标之前,我们需要时间来广泛采用本书中提出的指导。我们希望有一天,软件供应链的最佳实践能像食品检查员确保超市内所有食品安全消费一样普遍。然而,从现实角度来看,我们也明白在行业和社会层面,我们还有很长的路要走。