聊聊CWE 4.14 与 ISA/IEC 62443中,如何保障工业软件的安全性
本文分享自华为云社区《
CWE 4.14 与 ISA/IEC 62443
》,作者:Uncle_Tom。
1. 序言
随着 5G 的应用,物联的网发展,越来越多的自动化控制系统、云服务在工业控制系统被广泛使用。为了实现生产自动化,很多企业都引入了由 PLC(可编程逻辑控制器)控制的自动化生产设备和相关的自动化生产系统。用来连接各个自动化生产设备和生产系统的生产网络一般被称为 OT(Operation Technology)网络。而这些网络互联的普及与融合造成了 OT 环境系统安全受到威胁。再加上近来不断升温的政治冲突、恐怖主义与经济犯罪,这些都是引发面向产业关键基础设施进行攻击的动机。
2. CWE 4.14
在 28 年才能一遇的龙年 2 月 29 日,CWE 发布了新的一个版本 4.14。在这个版本发布的公告里,用了“其中包含了许多激动人心的更新(includes a number of exciting updates)”。这些更新主要包括:
- 有 4 个与硬件微架构相关的弱点;
- 1 个新视图:工业自动化和控制系统的
CWE-1424:ISA/IEC 62443 要求解决的弱点视图
; - 对观察和示范示例的更新, 其中包括来自HACK@DAC安全挑战竞赛的 10 个新示范示例。
2.1. 瞬态执行漏洞
新增的 4 个与硬件微架构相关的弱点:
- 1420:在瞬态执行期间暴露敏感信息
; - 1421:共享微架构在瞬态执行过程中暴露敏感信息
; - 1422:瞬态执行过程中不正确的数据转发导致的敏感信息泄露
; - 1423:共享微架构由预测状态影响瞬态执行导致的敏感信息暴露
。
瞬态执行攻击,也称为推测执行攻击,在过去几年中引起了人们的极大兴趣,因为它们会导致关键数据泄露。自2018年1月首次披露Spectre和Meltdown攻击以来,已经针对不同的处理器展示了许多新的瞬态执行攻击类型。
瞬态执行攻击由两个主要组成部分组成:瞬态执行本身和用于实际过滤信息的隐蔽通道。
瞬态执行是现代处理器的基本特征的结果,这些特征旨在提高性能和效率,而隐蔽通道是由于微架构组件的时间和空间共享而产生的意外信息泄漏通道。
在过去的几十年里,计算机架构师一直在努力提高计算系统的性能。在各种处理器微架构中引入了不同的优化来提高性能,包括流水线、无序执行和分支预测。有些优化需要对执行的指令,这导致某些指令的瞬时执行。在指令集体系结构(ISA)级别,当今的处理器运行正常并返回正确的结果。然而,在当今的大多数处理器中,复杂的底层微体系结构状态在瞬态执行过程中会被修改,即使ISA级别没有泄漏,数据也可能从这些微体系结构中泄漏。
例如,在等待条件分支被解析的同时,分支预测用于预测该分支是否将被采用,并且处理器在分支的结果已知之前开始沿着预测的控制流路径推测执行。指令的这种推测性执行导致处理器的微体系结构状态被修改,即使指令是沿着错误推测的控制流路径执行的。沿着错误推测的路径执行指令被称为瞬态执行(因为指令是瞬态执行的)。理想情况下,如果存在错误推测,应该会消失而没有副作用。当检测到错误推测时,应该清除体系结构和微体系结构的副作用, 但在当今的大多数处理器中都没有这样做,这导致了瞬态执行攻击。
瞬态执行与隐蔽通道相结合会导致瞬态执行攻击,从而危及系统的机密性。如图所示,在这种攻击过程中,机密(也称为敏感数据)在瞬态执行期间是可用的——这将瞬态执行攻击与传统的隐蔽通道攻击区分开来,在传统的隐蔽信道攻击中,数据被认为总是对发送方可用,而不仅仅是在瞬态执行过程中。在瞬态执行期间访问秘密数据后并将其编码到隐蔽通道中,然后攻击者可以从隐蔽通道中提取(即解码)机密数据。
CVE 信息数据库中,与英特尔产品信息的漏洞:
- 在 2018 年 14 个 CVE ID 中,瞬态执行攻击被分配了 9 个;
- 在 2019 年 9 个 CVE ID 中,瞬态执行攻击被分配了 4 个。
- 这些攻击还会影响其他供应商,如 AMD 或 Arm。
2.2. CWE-1424:ISA/IEC 62443 要求解决的弱点视图
新增的
CWE-1424:ISA/IEC 62443 要求解决的弱点视图
,给出了 ISA/IEC 62443 标准中涉及的弱点,也是我们需要在开发和检测中需要关注的问题。关于 ISA/IEC 62443 后面我们再做进一步的介绍。这里先对视图所涵盖的弱点做个介绍。
为了更好的分析这个视图,我们按照
CWE-1400:软件安全保障综合分类
中的分类,将所属的 CWE 进行了分类,如下图。有关缺陷的分类可以参考
《应用软件的缺陷分类》
中关于
CWE-1400:软件安全保障综合分类
的介绍。
CWE-1424:ISA/IEC 62443 要求解决的弱点视图
,并不是通过在 CWE 中 Relationships 节点下增加关联关系来定义这个视图的。而是利用 xml 的 xpath 来给出了这个视图下的关联 CWE 节点。这个 xpath 的表达式是定义在 CWE 节点的 Filter 节点,
CWE-1424:ISA/IEC 62443 要求解决的弱点视图
的节点定义如下。
<View ID="1424" Name="Weaknesses Addressed by ISA/IEC 62443 Requirements" Type="Implicit" Status="Draft"> <Objective>This view (slice) covers weaknesses that are addressed by following requirements in the ISA/IEC 62443 series of standards for industrial automation and control systems (IACS). Members of the CWE ICS/OT SIG analyzed a set of CWEs and mapped them to specific requirements covered by ISA/IEC 62443. These mappings are recorded in Taxonomy_Mapping elements.</Objective> <Filter>/Weakness_Catalog/Weaknesses/Weakness[./Taxonomy_Mappings/Taxonomy_Mapping/@Taxonomy_Name='ISA/IEC 62443']</Filter> <Mapping_Notes> <Usage>Prohibited</Usage> <Rationale>This entry is a View. Views are not weaknesses and therefore inappropriate to describe the root causes of vulnerabilities.</Rationale> <Comments>Use this View or other Views to search and navigate for the appropriate weakness.</Comments> <Reasons> <Reason Type="View"/> </Reasons> </Mapping_Notes> <Notes> <Note Type="Maintenance">The Taxonomy_Mappings to ISA/IEC 62443 were added between CWE 4.9 and CWE 4.14, but some mappings are still under review and might change in future CWE versions. These draft mappings were performed by members of the "Mapping CWE to 62443" subgroup of the CWE ICS/OT Special Interest Group (SIG).</Note> </Notes> </View>
从 Filter 的值
<Filter>/Weakness_Catalog/Weaknesses/Weakness[./Taxonomy_Mappings/Taxonomy_Mapping/@Taxonomy_Name='ISA/IEC 62443']</Filter>
可以看到这些关联关系是维护在 CWE 节点的 Taxonomy_Mapping 且属性Taxonomy_Name 值为 ISA/IEC 62443。以
CWE-1242:包含未记录的特征或鸡位(Inclusion of Undocumented Features or Chicken Bits)
为例。
2.3. 有趣的芯片 “chicken bit”
在访问控制的分类里,
CWE-1242:包含未记录的特征或鸡位(Inclusion of Undocumented Features or Chicken Bits)
的名字引起了我的好奇心。什么"chicken bit"?
查了下,原来它是芯片的一种配置位,可用于在芯片内部某些功能块流片后控制禁用或启用。有时,设计人员对某些新功能并不完全有信心,或者它们可能尚未在所有角落得到充分验证。因此,为了降低流片后的错误风险,设计中保留了一个配置位,可以切换以禁用新功能,并恢复到遗留功能,可以说是一种补救措施。
通常这些位是一次性可编程(one-time-programmable(OTP)),最终用户无法访问它们。这些位在芯片测试的生产过程中被编程,然后被锁定以防止进一步修改。
鸡
鸡,以其受惊和不确定的天性而闻名。因此这个位得到了一个有趣的名字“鸡位”(chicken bit), 工程师可以在流片后,处理意外的观察结果,也是一种自救的逃生通道。
这让我想起了 chicken 在英文的俚语中指“胆小鬼,懦夫”。以及最常用的 cheicken out,这可不是什么 “鸡走了”,“小鸡快跑”,而是指 “因胆怯而退缩”。一般都表达那种 “本来计划好的,却临阵脱逃”。除了chicken out,还有许多其他动物的 out。
duck out
指巧妙地逃脱应该做的事,逃避责任,逃税,逃婚 …。
比如 莎士比亚的《罗密欧与朱丽叶》中的台词:为了逃脱强制婚姻,朱丽叶饮下毒药(To duck out of the forced marriage, Juliet swallowed poison)。
fish out
意为“捞出,掏出”。这样理解你可能会觉得非常地形象:鱼都是藏在水里的,要出来,就得靠“捞”,从包里“掏出”某物也是类似的动作。比如:他从口袋里摸出一枚硬币(He fished out a coin from his pocket)。
3. ISA/IEC 62443 工业自动化和控制系统(IACS) 系列标准
3.1. 起源
2005年,国际自动化学会(International Society of Automation(ISA))成立了ISA99 -工业自动化和控制系统安全委员会,负责制定工业自动化和控制系统 (Industry Automation & Control System)的网络安全标准;
2007年,ISA99与国际电工组织委员会(International Electrotechnical Commission(IEC))成立联合工作组,共同制定并继续开发ISA/IEC 62443系列标准和技术报告(Technical Report(TR)),并陆续发布了IEC 62443系列标准;
2018年底,联合国欧洲经济委员会(UNECE)在其年会上确认,将把广泛使用的ISA/IEC 62443系列纳入其即将推出的网络安全共同监管框架(CRF)。CRF将作为联合国在欧洲的官方政策立场声明,为欧盟贸易市场内的网络安全实践建立一个共同的立法基础。IEC 62443 逐渐成为国际通行的工控网络安全标准,并在不同工业行业和领域实现了应用。
3.2. 范围和目的
ISA/IEC 62443 系列的范围是工业自动化和控制系统( Security of Industrial Automation and Control Systems (IACS)) 的安全。
IACS 定义为:
收集工业过程运行中涉及的人员、硬件、软件和政策,这些人员、硬件、软件和政策可能影响或影响其安全、可靠和可靠操作。
目的
ISA/IEC 62443 系列标准定义了实施和维护电子安全工业自动化和控制系统(IACS)的要求和流程。这些标准设定了安全最佳实践,并提供了一种评估安全性能水平的方法。对应对网络安全挑战给出了一个整体的方法,弥合了运营和信息技术之间以及流程安全和网络安全之间的差距。
ISA/IEC 62443 系列解决了工业自动化和控制系统 (IACS) 整个生命周期的安全性问题,适用于所有自动化和控制系统,而不仅仅是工业。
ISA/IEC 62443 标准提供的指南包括:
- 定义所有负责控制系统网络安全的利益相关者可以使用的通用术语、概念和模型;
- 帮助资产所有者确定满足其独特业务和风险需求所需的安全级别;
- 为产品开发人员建立一套通用的要求和网络安全生命周期方法,包括认证产品和供应商开发流程的机制;
- 定义对保护控制系统至关重要的风险评估流程。
3.3. 标准的结构
IEC 62443系列标准的文件包括四个标准系列:通用、政策和程序、系统、组件。
通用
该类别(IEC 62443-1-x)的部分包括四份文件。描述了工业自动化和控制系统(IACS)网络安全的通用方面的内容,如术语、概念、模型、缩略语、系统符合性度量及工控设备的安全生命周期。
- 1-1 部分 - 术语、概念和模型:介绍了整个系列使用的概念和模型。
- 1-2 部分 - 术语表和定义:是整个系列中使用的术语和缩写的列表。
- 1-3 部分 - 系统安全一致性指标:描述了一种开发从标准中的流程和技术要求派生的定量指标的方法。
- 1-4 部分 - IACS 安全生命周期和用例:提供了对 IACS 安全性底层生命周期的更详细描述,以及说明各种应用程序的几个用例。
政策和程序
该类别(IEC 62443-2-x)的部分包括五份文件。规定了IACS安全管理系统的要求、安全管理系统实施指南、IACS环境中补丁更新管理以及对资产所有者和服务提供商的安全程序(SP)要求。
- 2-1 部分 - 建立 IACS 安全性程序:描述了定义和实施有效的IACS网络安全管理系统所需的内容。
- 2-2 部分 - IACS 安全计划评级:提供了一种根据 ISA/IEC 62443 系列标准中的要求评估操作 IACS 提供的保护级别的方法。
- 2-3 部分 - IACS 环境中的补丁管理:提供有关 IACS 补丁管理的指导。
- 2-4 部分 - IACS 服务提供商的安全计划要求:指定了对 IACS 服务提供商(如系统集成商或维护提供商)的要求。
- 2-5 部分:IACS 资产所有者实施指南:提供制定有效的 IACS 网络安全计划指导。
系统
该类别(IEC 62443-3-x)的部分包括三份文件。提供了系统安全要求、安全等级和安全风险管理以及系统设计的基本指导和原则。包括将整体工业自动化和控制系统设计分配到各个区域(Zone)和管道 (Conduit) 的方法,以及安全等级(Security Level)的定义和要求。
- 3-1 部分 - IACS 安全技术: 描述了各种安全技术在 IACS 环境中的应用。
- 3-2 部分 - 安全风险评估系统设计: 涉及IACS的网络安全风险评估和系统设计。该标准的输出是区域和管道模型以及相关的风险评估和目标安全级别。这些都记录在网络安全要求规范中。该标准主要针对资产所有者和系统集成商。
- 3-3 部分 - 系统安全要求和安全级别: 介绍了基于安全级别的 IACS 系统的要求。主要受众包括控制系统供应商、系统集成商和资产所有者。
组件
该类别(IEC 62443-4-x)的部分包括两份文件。
- 4-1 部分 - 产品安全开发生命周期要求: 描述产品开发人员的安全开发生命周期的要求。主要受众包括控制系统和组件产品的供应商。
- 4-2 部分 - IACS 组件的技术安全要求: 描述基于安全级别的 IACS 组件的要求。组件包括嵌入式设备、主机设备、网络设备和软件应用程序。
3.4. ISA/IEC 62443 对应到国家标准
中国也是 ISA/IEC 62443 标准制定的参与者。同时也将 ISA/IEC 62443 标准的大部分映射到国标(GB)中。
3.5. ISA/IEC 62443 与 CWE 的映射
从前面的介绍,可以看到 ISA/IEC 62443 的系列规范是工业自动化和控制系统中保障安全的非常重要的规范。CWE 的"62443 与 CWE 的映射"工作组,这次只发布了研究中的部分成果。
目前对应的 CWE 弱点有 39 个。
按照
CWE-1400:软件安全保障综合分类
中的分类汇总如下:
按照 ISA/IEC 62443 系列规范的对应关系如下:
4. 结论
- CWE 4.14 增加了芯片的瞬态执行漏洞;
- CWE 4.14 增加了CWE-1424:ISA/IEC 62443 要求解决的弱点视图;
- CWE-1424:ISA/IEC 62443 要求解决的弱点视图的作用:进一步增强了对规范遵从的可度量性;对工业软件的安全性给出了明确的缺陷检查指导,提升了安全的防护能力。