保护完整性的设计
防止设计、实现、操作和数据的损坏,避免出现可能导致系统无法发挥预期效用或超出规定限制运行的中断。 系统应在工作负荷生命周期内提供信息保证。 |
---|
关键是实现控制措施,防止篡改业务逻辑、流、部署过程、数据,甚至较低堆栈组件,例如操作系统和启动序列。 缺乏完整性会带来漏洞,导致机密性和可用性遭到破坏。
示例场景
Contoso Paint Systems 为工业喷漆机创建蒸汽感应和通风控制系统。 该系统还用于自动捕获空气质量数据以进行环境影响报告。 他们有一个基于云的应用程序来支持分布在各个喷漆室的 IoT 设备。 应用程序本地组件在 Azure Stack HCI 和自定义 IoT 设备上运行。 该系统处于早期原型阶段,工作负荷团队计划在一年内发布生产版本。
保护供应链
持续防范漏洞,并检测供应链中的漏洞,以阻止攻击者将软件故障注入基础结构、生成系统、工具、库和其他依赖项。 应在生成时间和运行时扫描漏洞
如果了解软件的来源并在整个生命周期内验证其真实性,可提供可预测性。 可以提前了解漏洞,从而主动地修复漏洞,确保系统在生产环境中的安全。
Contoso 的挑战
- 工程团队正在实现其生成和发布管道,但尚未解决生成系统的完整性问题。
- 他们已选择在固件和云组件中使用一些开源解决方案。
- 他们听说过供应链漏洞或恶意内部人员如何破坏代码,然后利用代码破坏系统甚至外泄数据。 如果客户的环境报告受到影响,导致无法报告或在审计中出现错误陈述,对 Contoso 及其客户的影响可能是灾难性的。
应用方法和结果
- 团队修改了固件和后端云系统的生成过程,现在包括安全扫描步骤,以针对依赖项中的已知常见漏洞和暴露 (CVE) 发出警报。 此外,他们现在还包括对代码和包的恶意软件扫描。
- 他们还研究了在 Azure Stack HCI 上运行的反恶意软件选项,例如 Windows Defender 应用程序控制。
- 这些措施有助于增强信心,确保作为解决方案一部分部署的固件和软件不会执行意外操作,从而影响系统的完整性或客户的环境报告要求。
采用强加密机制
使用代码签名、证书和加密等加密技术建立信任并验证。 通过允许可靠的解密来保护这些机制。
通过采用此方法,你将知道对数据的更改或对系统的访问是由受信任的源验证的。
即使恶意参与者在传输中截获加密数据,也无法解锁或解码内容。 可以使用数字签名来确保在传输过程中数据不会被篡改。
Contoso 的挑战
- 选择用于感应和数据传输的设备目前没有足够的处理能力来支持 HTTPS 或自定义加密。
- 工作负荷团队计划使用网络边界作为主要隔离技术。
- 一项风险分析评审强调,IoT 设备和控制系统之间的未加密通信可能导致篡改,而网络分段不应被认为是足够的。
应用方法和结果
- 该团队与定制 IoT 设备的制造商合作,决定使用功能更强大的设备,该设备不仅支持基于证书的通信,还支持芯片上的代码签名验证,这样只有经过签名的固件才能执行。
优化备份的安全性
确保备份数据不可变,并在数据复制或传输时进行加密。
通过采用这种方法,你能放心地恢复数据,确保备份数据在静态时没有被无意或恶意更改。
Contoso 的挑战
- 每个月都会生成环境保护局排放报告,但这些报告每年只需提交三次。
- 报告生成后会存储在 Azure 存储帐户中,直到需要时再发送。 这样做是为了在报告系统发生灾难时作为备份。
- 备份报告本身未加密,而是通过 HTTP 传输到存储帐户。
应用方法和结果
- 在进行了安全漏洞分析后,团队发现,未加密备份是一个应该解决的风险。 团队通过加密报告并将其存储在 Azure blob 存储的“一次写入多次读取 (WORM)”不可变存储选项中来解决此风险。
- 新方法可确保维护备份的完整性。
- 作为额外的完整性措施,从主系统生成的报告现在将 SHA 哈希与权威备份进行比较,以检测对主数据源的任何篡改。