2020年10月15日 网络安全

保护嵌入式系统免受盲侧和其他零节目安全攻击

由Shaun Ruffell.

2020年9月,阿姆斯特丹VU大学系统和网络安全小组的一个团队宣布了一项开发漏洞的新技术,他们称之为BlindSide[1]。

盲人允许攻击者进行盲目的rop-style [2]攻击,而不是抗碰撞的目标,例如Linux内核。这对您的系统工程师来说意味着什么?它意味着盲侧可以了解攻击者,了解单个内核溢出漏洞,尽管最近的内核功能旨在防止可能导致这些类型的特权升级的信息泄漏,但是最近的内核特征,可以将一个未体现的shell转换为根外壳。

它是像盲侧的技术,其他技术仍然未知,驱动星形实验室假设攻击者将获得root访问权限的假设设计其产品。这就是为什么我们倡导每个人至少考虑的原因安全嵌入式系统的10个特性-data-at rest保护,身份验证和/或安全启动,硬件资源分区,软件容器化和隔离,攻击表面减少,最小特权和强制性访问控制,隐含的不信任和安全通信,数据输入验证,安全软件开发和操作系统配置,最后,完整性监控和审计 - 设计系统。这些属性可以使攻击者更加困难,以满足推出基于盲侧的攻击的前提,并且如果攻击成功,也可以包含损坏。

首先,让攻击者努力满足攻击前提条件。要使用Blindside,攻击者需要对内核溢出漏洞的知识,并访问一个未经特权的shell。

要减少曝光内核漏洞的可能性,请考虑“安全软件开发,构建选项和操作系统配置”和“攻击表面减少”属性。这些属性最基本的方面是配置内核,以删除不必要的应用程序的任何功能和驱动程序。加载到内核的代码越少,漏洞的机会越少。对于您自己开发的内核代码,利用内核构建系统提供的工具来降低添加自己漏洞的概率。此类工具的示例是内核堆栈检查器和编译器和链接器支持,用于将包含指针的结构放置在只读数据段中。

接下来,考虑减少向攻击者暴露非特权shell的可能性的方法。这可能很简单,只需应用OS配置并从生产系统中删除shell,如果不可能,考虑“最少权限&强制访问控制”策略,以确保系统上运行的非特权软件没有运行shell所需的权限。您还可以考虑“软件容器化和隔离”和“硬件资源分区”来约束非关键代码,这样如果攻击者可以利用它,他们就无法在包含更关键功能的虚拟机上获得shell。对于具有系统物理访问权限的攻击者来说,“Data-at-Rest保护”和“Authenticated和/或Secure Boot”可以使攻击者很难脱机更改软件配置,从而绕过您已经设置的运行时保护和分区。

即使您遵循了保护系统的所有最佳实践,仍然需要谨慎地假定攻击者可以利用它。

对于许多攻击,根访问是最终目标,因为它可以让攻击者完全控制您的系统。这并不一定是事实。

在这里,您可以应用“最少权限和强制访问控制”,这样即使是具有根shell访问权限的用户也不能读取或修改不应该位于强制访问控制策略定义的保护域之外的文件。

“软件容器化和隔离”和“硬件资源分区”可以再次应用,因为您可以将关键功能放在其他虚拟机中,并将其固定在具有预留CPU缓存的特定核心上。

一个利用了一个不太关键的进程的根用户仍然不能影响适当隔离的关键进程,然后更容易检查,以确保他们在与不太关键的进程和设备的互操作中应用“隐含的危难和安全通信”。

最后,考虑您可以应用“完整性监控和审计”的方式,以便您或系统可以实时响应探测安全周长或尝试从系统的一个组件横向移动到另一个组件的攻击者。

系统安全性似乎是一场永无止境的猫捉老鼠的游戏。攻击者发现了新的漏洞,防御者针对这些漏洞设计了对策。然后,攻击者就会受到激励,去研究和开发新的漏洞。《BlindSide》是游戏延续至今的更多证据。不过,要仔细应用安全嵌入式系统的10个特性,你可以给自己一个机会,不被这个甚至是下一个漏洞蒙面。

*最初发表于Starlab.io

参考

[1]https://www.vusec.net/projects/blindside/

[2]https://en.wikipedia.org/wiki/blind_return_oriented_programming.

以前的FACE系统的保证分区
下一个风河公司的钛安全套件荣获2020物联网进化安全优秀奖