引言
随着云原生技术的普及,容器已成为应用部署的主流形式。Docker和Kubernetes(简称“K8s”)的广泛使用使得应用的构建、交付和运行效率大幅提升。然而,容器共享宿主机内核的架构特性也带来了新的安全挑战,其中容器逃逸是最严重的安全威胁之一。
容器逃逸是指黑客利用容器存在的漏洞或配置问题,从容器里突破出来,得到宿主机的权限。容器文件系统隔离不足是导致容器逃逸的重要原因之一[1],一旦攻击者得手,攻击者可以控制整个宿主机,进而横向移动到业务集群内的其他主机,造成严重后果,如数据泄露等。
目前主流的容器安全检测方法主要分成三类:
(1)基于特征规则
基于特征规则的检测方法是通过系统预定义的规则来检测异常。该方法的优点是实现简单、检测速度快,缺点是只能检测已知攻击模式,针对0-day漏洞或没有设置相应检测规则的逃逸手法则无法识别[2]。
(2)基于基线配置
此类方法根据通用信息模型(Common Information Schema, CIS)基准来检查容器和K8s集的配置是否安全,比如是否有特权容器、是否有挂载敏感目录等。这类检测方法较为僵化,针对运行时的实时攻击无法检测。
(3)基于标准孤立森林
标准孤立森林在构建隔离树时对所有特征一视同仁,忽略了不同系统调用特征对逃逸检测的重要性差异[3-4]。例如,mount、clone等高危系统调用,对逃逸行为的指示性显然比普通的read、write要高得多,如果将这些调用等同对待,则导致高危特征无法被有效识别,从而削弱模型对逃逸行为识别的敏感度。
综上,现有方法存在以下三方面不足:
(1)依赖已知规则。基于特征规则的检测方法只能匹配预定义的攻击模式,无法检测零日漏洞攻击和未知的逃逸手法。
(2)忽略了时序与序列信息。现有方法多将系统调用视为独立事件,未捕获逃逸行为中系统调用的时序关联和序列化组合特征[5-6]。
(3)缺乏行为基线建模。现有的研究方法缺乏对不同容器正常行为模式的动态建模能力,难以区分正常波动与异常行为,导致误报率偏高[7-8]。
针对现有方法存在的问题[9-11],本文提出一种基于加权孤立森林的容器逃逸实时检测方法,主要工作和创新点总结如下:
(1)基于滑动窗口的多维特征提取方法
设计滑动窗口机制,将连续的系统调用序列划分为等长窗口,从每个窗口中提取统计特征、序列特征和时序特征,构建能够刻画容器正常行为的多维特征向量。
(2)面向容器逃逸的加权孤立森林算法
通过将mount、clone等系统调用定义高危特征集,并引入权重放大因子γ,使高危特征在隔离树构建过程中获得更高被选中概率,从而提升模型检测的敏感度。
(3)基于指数加权移动平均的自适应阈值优化
针对固定阈值难以适应动态环境的问题,采用EWMA方法动态调整检测阈值,实现召回率与误报率的动态平衡。
本文详细内容请下载:
https://www.pcachina.com/resource/detail/6000007248
作者信息:
马建阳1,王强2
(1. 中铁建数智科技(北京)有限公司网络安全部,北京100039;
2. 中国电子科技集团第四十一研究所装备事业部,山东青岛266500)
凡《网络安全与数据治理》(原《信息技术与网络安全》)录用的文章,如作者没有关于汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权等版权的特殊声明,即视作该文章署名作者同意将该文章的汇编权、翻译权、印刷权及电子版的复制权、信息网络传播权与发行权授予本刊,本刊有权授权本刊合作数据库、合作媒体等合作伙伴使用。同时,本刊支付的稿酬已包含上述使用的费用,特此声明。