第九章 运营技术中的软件透明度
运营技术 (OT) 运行着世界上最关键的流程,从导弹平台和防御任务,到水处理厂和电力,再到关键制造、机场等。通常,这些环境使用气隙隔离网络高度隔离,并且可能有限制外部连接、云或移动功能。正因为如此,我们依赖软件验证的许多技术在这里可能没有用。 例如,当无法访问互联网时,如何验证代码签名证书的证书吊销列表(CRL)与已签名的固件更新之间的匹配程度?如果它与已知的恶意软件存储库条目匹配,那么如何在软件材料清单(SBOM)中查找和识别组件哈希?当无法轻松更新信任信息时,您是否仍然认为传输层安全性(TLS)证书的过期日期过长是一个问题? 此外,在考虑有关国家敌对势力的问题时,这些产品可能是在我们视为敌对的世界地区内制造或由这些地区的业务支持的。软件来源的问题尤其具有挑战性,因为《国防授权法案》(NDAA)和各项行政命令的合规要求都在寻求收回允许向关键基础设施供应产品的国家。 例如,在2020年,第13920号行政命令《美国成批电力系统安全》发布,解决了从美国电网竞争对手采购方面的问题。这一命令之后又颁布了一项禁令,禁止从中华人民共和国采购用于电网的设备。这些命令后来已被撤销,并现在归属于《行政命令14017号,保护美国供应链》。尽管如此,可以明确的是,制定关于关键基础设施和国防供应链风险管理政策仍然是国家的优先任务。 《行政命令14028号》促使了围绕软件透明度的大量活动,包括SBOM(软件构建材料清单)和软件标签等内容,这些内容设计三个主要利益相关者,其中之一是国家电信和信息管理局(NTIA)负责定义SBOM的属性。此任务和其他任务,例如漏洞可利用性交换(VEX)格式的定义,自那时起已转移到网络安全和基础设施安全局(CISA),其主要任务是保护关键基础设施。很明显,在可预见的未来,操作技术环境将继续处于美国软件透明运动的前列。
9.1软件的动力学效应
EO 14028最引人注目的举措之一就是采取行动来界定“关键软件”。正如我们之前讨论过的,这些定义可能很难搞清楚。有人可能会认为所有的软件都有潜力成为关键软件,关键在于如何使用它。我们过去使用的一个例子是用于在互联网上显示可爱小猫图片或视频的图像渲染库。很少有人会认为这是关键软件。但是如果同样的库被用来渲染电力环境中的遥测数据呢?那就完全是另一种情况了。同一款软件,不同的使用方式,其关键性完全不同。
一个让许多从业者感到好奇的OT方面是这些系统能够超越其传统的虚拟边界,对现实世界产生实质性的影响。软件控制着保持监狱紧闭的门闸,维护消毒您饮用水的化学混合物,操作电力网,甚至运行军事防御系统的动能部分。如果那个渲染小猫图片的库被用于导弹定位系统,并且士兵的生命依赖于它,那么它也可以被认为是极其关键的。在OT领域中,软件缺陷可能导致人员生命的损失,其潜在后果是灾难性的。
在过去几年中,有多份报告称勒索软件造成医院护理延误,2020 年在德国,有报道称一名患者的死亡是由勒索软件造成的。一名病人的死亡就是由勒索软件造成的。虽然这在很大程度上没有得到证实,但皮尤慈善信托基金会(Pew Charitable Trusts)等机构的研究清楚地表明,这些事件 有可能造成人员伤亡。随着我们这个由软件控制的社会和远程医疗系统为加强医疗服务创造了机会,在为我们提供了新的机遇的同时,也为攻击者提供了新的机会。
对电力网络的攻击也在增加。我们亲眼见证了俄罗斯等国家如何利用网络和动能攻击的组合策略来摧毁一个国家。例如,通过剥夺其提供安全饮用水或电力的能力,整个国家公民的健康可能会受到威胁。一个国家的战争机器,从港口、铁路、电力、水和其他附属设备,都会产生一种网络效应,使得网络破坏对于对手极具吸引力。除此之外,还有什么能从世界各地制造物理破坏?
Stuxnet 攻击可能是通过软件实现动能结果的最佳实例之一。虽然分析表明最初的攻击是由一个受感染的 USB 驱动器发起的,但恶意软件却导致了伊朗核浓缩能力的大规模延迟。一些专业人士指出,这可能导致了984台离心机的运行受阻,伊朗的核计划可能受到长达两年的发展挫折。
对 Stuxnet 攻击进行最透彻分析的可能是由Langner公司进行的。该公司是一家工业控制系统(ICS)资产管理公司,长期以来在 ICS 安全领域拥有深厚的专业知识。他们在2013年发布了题为“To Kill a Centrifuge”的论文(www.langner.com/wp-content/uploads/2017/03/to-kill-a-centrifuge.pdf),并在2017年进行了更新。该论文描述了这次袭击最终是如何实施的,以及这对伊朗的核浓缩计划以及其他行业意味着什么,特别是在我们希望防止未来针对关键基础设施的攻击的背景下。
Stuxnet被设计用来降低离心机的效率。虽然感染发生在多个地点,但人们普遍认为Natanz铀浓缩设施是最初的目标。在2010年夏季,人们发现离心机出现异常数量的故障,但并没有引起过多的怀疑。显然,这里的技术水平设计得相当微妙,因为它同样可以轻易地被设计成直接摧毁离心机。
据推测,初始感染是通过感染Windows机器实现的,很可能是控制工程师用来编程和管理西门子软件和设备的移动设备。该恶意软件直到若干年后利用了几个零日漏洞,才被反病毒软件供应商识别为恶意软件。它在初始感染时并没有传输网络,因此,分析网络流量和依靠反恶意软件解决方案来防止传播的传统措施在很大程度上是无效的。
然而,更值得注意的是,除了使用传统方法检测和预防感染所面临的挑战之外,恶意软件的设计逻辑是隐蔽地降低压力系统转子的性能,并最终使其变得脆弱。通过交替使用慢速和快速周期,它突破了系统设计的极限,测试了系统的物理限制。这种逻辑行为的变化表明,合理的代码变化如何能给系统带来重大影响
9.2遗留软件风险
同样,正如我们之前所讨论的,这些软件中的很多都非常陈旧 在验证传统产品时也会遇到类似的挑战。OT 系统的一个主要特点是需要有弹性。著名的 ICS
安全专家丹尼尔-艾伦瑞克(Daniel Ehrenreich)所说的那样,这些环境都是有关安全性、可靠性和生产率,而不是保密性、完整性和可用性。
那么,我们如何实现这些目标呢?我们主要通过详尽的工程设计与极强的安全工程文化相匹配、 在这种情况下,系统特性会根据安全影响进行威胁建模。一些安全标准标准如 ISA84 (www.isa.org/technical-topics/safety) 等标准在这些环境中得到了广泛应用,作为设计驱动力,安全比网络安全更为普遍。对于关键基础设施公司来说,每次会议都从进行“安全时刻”练习开始,以引导员工思考安全问题,戴安全帽和防护装备是常规操作,没有其他选择的余地。此外,这些环境往往是静态的,因为变化意味着风险。一旦工程师进行了工厂验收测试(FAT)以确保系统按设计运行,并进行了现场验收测试(SAT)以对安全性和控制进行评估,系统基本上就被认为是 "锁定更改 "的,这意味着不应再进行任何更改。通常会发生一些常规变更,比如对可编程逻辑控制器(PLC)进行轻微的调整,一些非关键或冗余系统可能会进行补丁更新,新的作业可能会排队等待处理,但通常不会发生重大变更。
虽然这限制了引入安全控制的能力,但也降低了通过计划变更而导致供应链受损的可能性。缺乏变更的组合,以及可能并非真正隔离或“空气隔离”的环境感知,有时可能会导致一种虚假的安全感。但是,在有计划的变更之前,减少变更事件确实可以降低依赖性混淆攻击对 OT 系统造成影响的可能性。另一个复杂因素是,对于真正的空中封闭系统或没有互联网接入的站点,验证软件的真实性和安全性可能具有挑战性。普遍情况是,软件是通过工程师的笔记本电脑进入设备的,而不是从可信网站下载的。在一些情况下,如核设施,常常需要基于亭式终端的反恶意软件扫描能力,但正如我们在Stuxnet案例中看到的,这可能不是一种有效的方法。
尽管缺乏变更,但早在2000年代初期,传统思维认为OT系统如此复杂和专有,外界无人知晓其工作原理,攻击工具寥寥无几,文档资料几乎不存在,无法帮助对手攻击可能存在的数千种 的潜在 ICS 协议。随着 OT 协议栈日益数字化和标准化,以及互联网社区内的信息共享互联网社区内的信息共享降低了这种 "隐蔽安全 "的价值。例如在Metasploit等框架中存在稳定的漏洞利用和攻击工具,或是定期举办针对ICS的黑客竞赛,如在迈阿密海滩举行的年度S4 ICS安全会议的Pwn2Own比赛,以及许多其他类似的活动。
形势正在发生变化,保护软件安全的新方法 在很大程度上忽略了传统软件领域。大多数软件供应链安全解决方案都应用于软件即服务(SaaS)、容器和现代软件开发框架,但在解决遗留软件问题上,除了专注于ICS固件漏洞发现的逆向工程工具外,很少有人对解决遗留软件问题感兴趣。因此,我们面临的挑战就变成了如何为终止支持的产品--即供应商已不再经营的产品,解决这些问题?通常的选择要么是花大笔资金进行翻新和替换,要么是应用虚拟补丁或缓解控制措施,并希望我们已经在所有正确的地方减少了攻击面。
9.3控制系统中的梯形逻辑和设定点
可编程逻辑控制器 (PLC)、远程终端装置 (RTU) 和类似的 OT 设备可运行基本的自动化程序。通常使用梯形逻辑、功能块图或其他方法进行编程。它们描述了一系列输入和输出,包括用于决策的逻辑或参数。这些程序可能仅仅是简单的开关控制,也可能包括条件逻辑,例如使用诸如温度、每分钟转数、电压、压力或其他传感器输入作为逻辑条件的辅助输入。这个程序通常会定义一系列可接受的数值范围,设定点的概念用于确定正常(或异常)的状态。
讨论动能软件效应时,值得注意的是讨论漏洞的定义。我们是否需要利用漏洞或 Metasploit 模块来造成破坏?如果一个简单的数据完整性条件就能引发灾难性影响呢?我们不需要 "常见漏洞和暴露"(CVE)、 但也许我们可以操纵传感器数据,使其报告错误情况。或者,我们可以操纵定义正常值的设定点。如果我们知道超压事件的故障条件是每平方英寸 500 磅(PSI),而设定点安全地低于 350 PSI,但未经授权的更改却将设定点修改为 1,000 PSI,这可能比 Log4Shell 漏洞利用导致锅炉爆炸的后果更为灾难性。
可编程逻辑控制器 (PLC) 通常包括基本的安全机制,如物理按键,用于确定设备是处于运行状态还是程序状态,以便进行更改。例如,影响施耐德电气 Triconex 安全仪表系统的 Trisis 恶意软件众所周知的首次针对安全系统的攻击之一。这种攻击 的部分原因是设备被设置为程序模式,因此可以进行更改,另一部分原因是组织没有完全理解正常状态是什么样的,因此忽略了故障。但作者们也见过固件更改可以实施到许多OT设备上,绕过物理键来进行编程控制的情况。虽然最佳做法是保持设备处于运行状态,但这并不能保证将来供应链中固件的联合受损不会促成类似的攻击。
在Triton案例中,攻击是通过多阶段活动交付的,这一情况由爱达荷国家实验室的运营技术环境网络安全(CyOTE)记录和文档化。CyOTE旨在处理可观察指标的分类方法,并根据这些指标采取行动。在他们对Triton的案例研究中,CyOTE建立了以下事件链:
步骤 1-IT 网络入侵:这一步骤是通过允许访问 IT 网络的配置不当的防火墙实现的。
步骤 2--从 IT 网络转向 OT 网络:工程工作站 在 OT 网络内的工程工作站被入侵,并部署了有效载荷、 模仿合法的 Triconex 应用程序 trilog.exe。
步骤 3-OT 攻击能力开发:攻击者随后建立控制点,确定进一步攻击的目标系统、 包括确定目标安全仪表系统 (SIS) 的运行状态。
步骤 4-OT 攻击能力传送:未经授权的代码多次传输到 Triconex 设备,先是测试,然后最终注入恶意 shellcode 和新的梯形图逻辑,从而改变设备的行为。
步骤 5-支持攻击-隐藏:利用规避检测的机制,恶意软件禁用了随机存取存储器/只读存储器(RAM/ROM)检查,并且只针对处于程序模式的设备进行攻击。这种攻击发生在感染修改固件后,允许即使在运行状态下也能执行恶意指令的情况下。
步骤 6-OT 攻击的执行和影响:最终结果是系统安全控制完全被禁用,根据程序逻辑可以选择是否禁用这些控制。
虽然这次攻击采用了首先侵入信息技术(IT)再渗透到运营技术(OT)的传统方法,但是这与我们所见过的大量软件供应链攻击无异,都是固件和代码验证的缺失为这次攻击提供了便利。作者认为这是一个具有里程碑意义的案例,展示了软件和固件验证不足如何可能导致下游的安全影响,甚至可能导致人员伤亡。从这个案例中还可以得到许多其他启示,例如需要适当的分段、有效的监控和基线环境来进行异常检测和事件响应。但是,如果产品要求执行已签名的二进制文件,那么就很有可能避免这次攻击。
9.4 ICS攻击面
如前所述,与企业 IT 相比,ICS 的攻击面通常最小。大多数环境都被严格分割,能源部在《2020财年国防授权法案》第5726条的指导下,通过安全能源基础设施执行任务组(Security Energy Infrastructure Executive Task Force)赞助了一项研究。这项工作产生了 一系列参考架构,包括根据场地类型规定的电力推荐分割策略, 其中一个例子见图 9.1。
此外,来自北美电力可靠性公司(NERC)关键基础设施保护(CIP)监管标准的建议,管理着北美大规模电力系统,并根据国际电工委员会(IEC)62443系列标准的要求,规定了分割方法,为了保护OT系统免受直接暴露于这些网络和不受这些网络所不信任的企业IT环境的侵害。
仍有成千上万的 ICS 资产暴露在互联网上,其中许多验证薄弱或根本没有验证措施。流行的攻击面浏览器网站 Shodan 有一整个页面专门用于识别这些系统(www.shodan.io/explore/category/industrial-control-systems)。从这个网站上可以看到,即使搜索特定的 ICS 产品,也会有成千上万的结果、 其中很多都存在漏洞,并被用于关键流程中。随着对未连接到互联网的资产进行细分,这对关键基础设施组织意味着什么?许多攻击仍然是通过钓鱼或其他手段从对企业IT网络的一次初始入侵中扩散并随后转移的。但如果这些环境真正是隔离的,那么企业就有必要研究软件是如何通过承包商将软件引入环境,承包商可能会通过引入来自供应商的外国通用串行总线(USB)密钥或通过供应商发送的固件更新CD-ROM来进行操作。这些载体往往与物理安全紧密相连,因此必须采取整体战略控制可以引入的软件。 同样,产品供应商也需要为操作员提供机制,以便在无法使用在线方法时进行离线验证的机制。
9.5 智能电网
智能电网是传统电网的现代化、数字化版本,它使用先进技术来提高电力系统的效率、可靠性和灵活性。它使用传感器、通信网络和控制体系来监测和控制电力的流动,从而实现可再生能源的整合和需求管理。这使得分布式能源(DERs)如太阳能和风能得到更广泛的应用,并实施需求响应计划来在高峰时段管理能源使用。
随着拜登政府在可再生能源和基础设施改善方面做出努力,分布式能源资源(DER)正在迅速成为热门话题,因为未来几年将有数十亿美元投资于可再生能源电网。这些系统是小型能源生成和储存系统,例如屋顶太阳能电池板和像NextEra能源公司那样的大型太阳能农场,风力涡轮机和电池储存系统,它们与电网在分配层面连接。智能电网通过在电网和这些分布式资源之间实现实时通信和控制来实现这些DER的整合。这种日益增加的连通性与传统上断开和隔离的电网基础设施形成鲜明对比,这些设备在现场暴露的风险为电网运营商带来了新的网络安全挑战。
分布式能源(DER)中的逆变器技术,如太阳能电池板和风力涡轮机,正在成为智能电网中越来越重要的组成部分。这些技术将分布式能源产生的直流(DC)电力转换成电网可以使用的交流(AC)电力,并且还可以提供电压和频率控制等电网服务。逆变器和其他DER控制系统都连接到互联网上,可以被远程控制和监控。这可能会增加攻击面,为网络攻击创造潜在的漏洞。
除了分布式能源资源(DER),先进计量基础设施(AMI)被用于测量和实时向公用事业和消费者传达有关能源使用情况的详细信息,这使得更准确的计费和需求响应计划的实施成为可能。此外,先进的分析和机器学习算法被用于分析智能电网产生的海量数据,以检测模式、预测设备故障和优化电网的运行。
这种复杂性的增加带来了在检测到风险条件时动态纠正的新能力,但同时也为软件引入灾难性后果带来了新的机会。针对问题的预警时间可能会更短,特别是由于分布式能源资源具有与天气相关的特性,以及针对电池容量和放电等新攻击模式,这可能会在电网运营商未做好准备时造成能源短缺。这就是基于逻辑的攻击可能会成为寻求影响我们今天正在设计的新型和改进电网的对手的新常态的原因。
随着这种复杂性的出现,我们需要技术标准化。IEC 61850是一项国际标准,它定义了电力系统变电站自动化系统中的通信协议和数据模型。它为智能电网发挥着关键作用,为构成电网的不同设备和系统之间提供了一种通用语言和框架,进行相互通信。IEC 61850的主要好处之一是,它能够集成不同供应商的设备和系统,从而能够更高效、更经济地部署智能电网技术。IEC 61850还为不同设备和系统提供一个共同的数据模型,这使得在不同系统之间交换信息以及对收集到的数据进行高级分析变得更加容易。
当我们开始考虑构成智能电网的物联网设备的扩散时,我们的安全状况可能会开始看起来很像典型的物联网攻击表面。Gonda Lamberink在2021年的一篇文章中探讨了与物联网相关的供应链风险表面,特别是智能电网的供应链风险表面(www.power-grid.com/executive-insight/securing-smart-grid-supply-chains-with-a-zero-trust-mindset)。
在文章中,Lamberink呼吁采用零信任思维模式来降低智能电网的风险,这一点特别有趣,因为在传统的电网中,隐含的信任是常见的。大多数系统没有身份验证,没有加密通信,要求零到低延迟的网络收敛时间,而传统安全技术无法跟上。智能电网的暴露程度增加意味着传统的封闭式花园方法无法保护这一基础设施。
此外,当我们考虑与这些环境相一致的标准框架时,传统的NERC CIP和IEC 62443标准仍然适用,但许多人也在寻求NIST和其他机构的更传统的物联网框架。
9.6 总结
在这一章中,我们讨论了软件的行为效应以及可能对社会产生的物理影响。我们也涉及到了与工业控制系统中的遗留软件和梯形逻辑相关的风险。我们进一步探讨了工业控制系统攻击面的性质及其对关键基础设施、国防和社会的风险,以及智能电网所发挥的作用。在接下来的章节中,我们将讨论软件供应商和消费者的一些实用指南。