什么是容器下的内核漏洞?

      在安全的容器环境下,攻击者往往难以应对。然而,一旦出现了(最新曝光的)内核漏洞,攻击很可能永远不可行,变得可行,变得简单。实际上,不管攻防方案如何改变,内核漏洞的利用通常是从客户空间非法进入内核空间开始,到内核空间授予当前或其他进程高级权限之后,再回到客户空间结尾,容器逃逸就是这样。这样的情况下,漏洞缓解技术可以有效地提高漏洞利用的难度,使攻击者即使在有漏洞并被发现的具体场景中,也难以或根本无法利用某个漏洞发动攻击。它大大增加了攻击门槛和攻击成本。

outputo-20211014-090516-448-sdbc.png

缺陷消除技术(VulnerabilityMitigations)是一种防御技术,用于增加漏洞利用的难度。随著人类需求和IT技术的发展,各种硬件、系统、应用、协议不断被设计、开发。从图灵停机问题[1]可以得出结论,人们不可能给出一般的算法或工具来分析和确定程序中并没有漏洞;与此同时,对特定软件和硬件进行相当程度的彻底的安全检查又花费过多。为此,为了减轻或者阻止漏洞,已经提出了一种漏洞缓解技术,承认存在漏洞。

攻防是一种持续的、动态的博弈过程,而漏洞缓解技术常常是在攻击者首先提出甚至发起针对某一漏洞的攻击方法(值得一提的是,许多攻击者和防御者都是安全研究人员,正所谓不知攻,不知道防)。举例来说,在最经典的“重写函数返回地址为攻击利用码(shellcode)”的缓冲区溢出攻击被提出之后,人们给操作系统增加了“地址空间规划动态随机(ASLR)技术”。之后,攻击者逐步地逐步地提出“回到libc库(ret2libc)”和“回到过程链接表(ret2plt)”,“回溯式编程(ROP)”这样的攻击技术;防守者也是逐步逐步地设计出一种“数据执行保护(DEP)”、“金丝雀”,“安全结构化异常处理(SafeSEH)”等漏洞缓解技术。在计算机科学与技术领域中,分层的概念也不例外。上述示例主要展示了在操作系统和应用程序安全层面上的安全问题和缓解方法。实际上,在其他层面,情况也差不多。如“跨站脚本攻击(XSS)”、“SQL注入”等漏洞,在网络安全领域,人们开始运用“特字转义”、“参数化查询”等减缓技术。

可是,天地并没有免费午餐。的确,漏洞缓解技术虽然提高了攻击者的攻击门槛,可是实施漏洞缓解技术往往也会对系统性能产生一定的影响,这是目前相当一部分漏洞消除技术尚未普及的原因。归根结底,对大多数客户来说,安全是重要的,但并不是主要的目标,防御不会对生产和生活造成太多的不便。所以,“如何有效地降低能耗”一直是一个行业,也是学术界研究的热点问题。

有一些安全领域的盆友对客户态不一样级别(如上所述)漏洞缓解技术较为熟悉,可是对于不太接近内核安全性的理解可能很少。在云原生技术日益普及的今天,容器和宿主主机共享内核的特性(当然,一开始就十分重要),内核安全变得越来越重要。

分享: