【论文总结】针对操作系统级虚拟化的抽象资源攻击

news/2024/5/5 11:24:15/文章来源:https://blog.csdn.net/Ohh24/article/details/130057349

介绍

这是一篇来自2021CCS的论文,作者有Nanzi Yang, Wenbo Shen, Jinku Li, Yutian Yang, Kangjie Lu, Jietao Xiao, Tianyu Zhou, Chenggang Qin, Wang Yu, Jianfeng Ma, Kui Ren。

概述

本文的贡献如下:

  1. 新的攻击面:作者揭示了一个影响操作系统主要功能,影响多个操作系统,操作系统虚拟化共有的抽象资源攻击。

  2. 攻击实用性评估:四大云计算厂商提供的self-deployed native container环境均受到抽象资源攻击影响。

  3. 系统化分析:作者设计并实现了一个静态分析工具,并识别出501个可被容器重复触发的抽象资源。

  4. 作者将工具源码以及结果开源在Github上了

    Github地址:https://github.com/ZJU-SEC/AbstractResourceAttack

概述

这篇论文揭示了一种操作系统级虚拟化的固有问题-共享内核变量和数据结构。和物理资源(CPU,内存)相比,这些内核变量和数据结构也被称为抽象资源。基于这些共享抽象资源,该论文提出一种新型攻击 - 抽象资源攻击。通过实验证明,抽象资源攻击可影响操作系统所有主要功能,包含进程管理、内存管理、存储管理、IO管理,造成系统崩溃或者性能大幅度下降;同时可攻击大多数主流操作系统,包含Linux,FreeBSD以及Fuchsia内核;同时该论文进一步在四大云厂商环境进行验证,证明抽象资源攻击在其上部署的共享内核容器环境中依然可行,揭示该攻击影响的广泛性和严重性。该论文实现并开源了一个静态分析工具,系统化分析出Linux中潜在的抽象资源攻击,找出了超过500个Linux内核中易受攻击的抽象资源。

背景

操作系统级虚拟化是云计算中的一项核心技术,它允许多个独立的和隔离的用户空间环境在同一个内核上运行。目前,操作系统级虚拟化以Linux的container为代表, 比较常用的还有FreeBSD的Jails以及Solaris的Zones.

文章使用容器来代指这些共享内核的独立用户执空间,目前应用最为广泛的容器是Docker container,Red Hat Openshift和Apache Openwhisk这两个常见的云平台都使用了Docker container.

与传统虚拟化为每一虚拟机维护单独的内核不同,容器凭借其共享内核的特性,拥有更快的启动速度已经更好的资源利用效率。在Linux容器中,内核提供了namespace和cgroup机制实现资源隔离和限制,内核还提供了如seccomp和selinux等安全机制进行安全加固。由于容器的广泛应用,其安全问题也备受关注,之前的研究主要集中于信息泄漏,侧信道攻击,带外负载等问题。

抽象资源攻击

与之前的工作不同,本文从一个新颖的角度进行切入,作者认为除了如CPU, memory这些物理资源以外,操作系统中维护的变量和结构体也是十分重要的资源。运行在同一操作系统内核上的容器(native container)可以通过系统调用来访问内核提供的服务,而且系统调用会使用大量内核维护的变量和结构体,因此容器是共享这些变量和结构体的。

​ 基于这种容器和内核之间的复杂数据依赖关系,作者将内核维护的变量和结构体统称为抽象资源(Abstract Resource),并提出了一种新型攻击—抽象资源攻击(Abstract Resource Attack), 这种攻击的核心是恶意容器通过耗尽内核中容器间共享的抽象资源,发起拒绝服务(DoS)攻击,并且其具有以下特点:

  1. 可以在non-privileged,drop all capabilities的容器中,在不利用任何内核漏洞的情况下发起攻击。
  2. 攻击能影响操作系统提供的各大主要功能。
  3. 攻击能影响多个主流操作系统如Linux,FreeBSD和Fuchsia。
  4. Linux中已有的namespace,cgroup等机制无法对抽象资源进行有效的限制。

以上特点说明抽象资源攻击这一新的攻击面是操作系统级虚拟化引入的共有问题,而且现有机制无法对其进行有效的限制。

抽象资源攻击的root cause

作者首先从一个例子-nr_files攻击来阐述Abstract Resource的root cause.Linux内核存在一个nr_files全局变量,由于namespace,cgroup都没有对nr_files变量进行隔离和限制,恶意容器能轻易耗尽nr_files,使其达到files_stat.max_files上限,从而使被攻击容器无法进行与文件相关的操作。
在这里插入图片描述

针对云平台的抽象资源攻击

为了进一步评估抽象资源攻击的影响,作者还挑选了7种抽象资源,在四大云厂商提供的self-deployed native container环境中进行了实验。实验结果表明,各个云厂商的self-deployed native container环境都容易受到抽象资源攻击的影响。实验过程中,作者还惊喜地发现,Google的安全容器gVisor也受到两种抽象资源攻击(nr_files和netns_ct->count)的影响。这是因为gVisor虽然实现了自己的用户态内核,但是其最终还是会向宿主机内核发起系统调用完成相应的请求。作者已经将相关问题披露给了四大云计算厂商,并且得到了他们的回复和确认。
在这里插入图片描述

静态分析工具的设计与分析结果

最后,作者还设计并实现了一个LLVM静态分析工具系统化,自动化地找出Linux内核中可被容器耗尽的抽象资源。为了解决如何识别出有意义的抽象资源以及如何区分出抽象资源是否能被容器耗尽两大挑战,该工具分别对应包含了configurations-based analysis和access-based analysis两大部分。在工具分析出的1010个结果中,其中有700个与驱动无关的资源,310个与驱动相关的资源。经过进一步的动态触发验证,在这700个资源中,有389个资源能被容器重复触发,true positive rate为55.6%。在310个驱动相关资源中,排除其中92个在本地没有对应硬件支持的资源,其中有112个抽象资源可以被容器重复触发,true positive rate为51.4%。
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_284858.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从0学Python基础】Python的基础语法(一)

文章目录常量和表达式变量和类型变量的定义变量的使用变量的类型intfloatstrbool动态类型注释输入和输出输出输入运算符算数运算符关系运算符逻辑运算符赋值运算符其他常量和表达式 print(1 2 * 3)print是Python内置的一个函数,作用为输入打印到控制台形如1 2 * …

Leetcode完成所有工作的最短时间2

我的解法: 先排序,然后让能工作最多的工人去做最长时间的工作,最短工作的工人去做最短时间的工作 class Solution:def minimumTime(self, jobs: List[int], workers: List[int]) -> int:jobs.sort()workers.sort()max_time-1for pointer…

HDFS学习笔记 【Namenode/数据块管理】

说明 Namenode关于数据块管理主要做两方面的事情。 文件系统对应数据块 数据块对应数据节点 Block的数据结构 通过Block,BlockInfo,BlocksMap,replica等数据结构表示数据块。 Block 唯一标识一个数据块 包含有比较方法,通过blockId进行比较 BlockI…

前端自动化测试之葵花宝典

作者:京东零售 杜兴文 首先聊一下概念,Web 前端自动化测试是一种通过编写代码来自动化执行 Web 应用程序的测试任务的方法,它通常使用 JavaScript 和测试框架 (如 Selenium、Appium 等) 来实现。 Web 前端自动化测试的优点是可以提高测试效…

微服务+springcloud+springcloud alibaba学习笔记【基础知识+各个组件介绍+聚合父工程创建】(1/9)

微服务springcloudspringcloud alibaba学习笔记 1/91、微服务简介1.1 微服务的自动化部署(CI /CD)(持续集成 持续交付)1.2 服务集中化管理1.3 分布式架构1.4 熔断机制 Hystri2、SpringCloud 简介2.1 SpringCloud 版本对应关系2.2 SpringCloud…

Node.js安装与配置(详细步骤)

前言 本篇博文记录了Node.js安装与环境变量配置的详细步骤,旨在为将来再次配置Node.js时提供指导方法。 另外:Node.js版本请根据自身系统选择,安装位置、全局模块存放位置和环境变量应根据自身实际情况进行更改。 Node.js安装与配置 一、…

windows命令执行的几种绕过方法

windows命令执行的几种绕过方法介绍1、添加特殊符号2、定义变量3、切割字符串4、逻辑运算符在绕过中的作用5、利用for循环拼接命令介绍 反检测、反清理,是红队攻击中的重中之重,本文详细描述了几种windows执行命令的几种绕过手法。 1、添加特殊符号 w…

【 Spring MVC 核心功能(一) - 使用注解实现 URL 路由映射】

文章目录引言一、RequestMapping 注解介绍1.1 RequestMapping 是 post 还是 get 请求?1.2 RequestMapping 指定一种请求方式二、GetMapping三、PostMapping四、总结引言 前面我们讲到,学习 Spring MVC 需要掌握三个核心功能即连接,获取参数&…

webgl-attribute、uniform、varying三者的区别

通用js: let canvas document.getElementById(webgl) canvas.width window.innerWidth canvas.height window.innerHeight let ctx canvas.getContext(webgl) attribute: 范围: 只适用于vertexShader,将js代码中的数据传递给vertexShader。 使用方…

软考-套接字(scoket)

💤SocketSocket套接字:是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。将OSI模型中从传输层到物理层封装起来的抽象层,把网络协议隐藏在Socket抽象层中,只对使用者暴露API接口&#xff0c…

DDoS攻击实验笔记

DoS&DDoS简介 DoS(Denial of Service),拒绝服务攻击是通过一些方法影响服务的可用性,比如早期主要基于系统和应用程序的漏洞,只需要几个请求或数据包就能导致长时间的服务不可用,但易被入侵检测系统发现。 DDoS(Distributed D…

Mysql通过行表中的行数据筛选主表数据

有订单头表和订单行表。筛选出行表中包含某些商品的头表 文章目录1. 示例表test_ordertest_order_line2. 实现EXISTS(推荐)内联1. 示例表 test_order test_order_line 2. 实现 EXISTS(推荐) 优点: 使用内联,主表字段很多的情况下,需要写越…

人员跌倒识别检测系统 yolov7

人员跌倒识别检测系统通过PythonYOLO7网络模型算法,人员跌倒识别检测算法模型对现场画面中有人员倒地摔倒行为实时分析预警,发现则立即抓拍存档告警同步提醒后台值班人员及时处理。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队…

LabVIEW实现ST-Link自动烧录单片机

目录 1、添加CLI到系统环境变量中 2、查询ST-Link/V2烧录器信息 3、连接待烧录的MCU芯片 4、下载固件到Flash 5、可能会使用的命令 5.1、-Rst 5.2、-ME 5.3、-SE 6、封装好的LabVIEW库 在讲解LabVIEW实现ST-Link自动烧录之前先聊一聊ST官方提供一款专用的Flash烧录工具…

《华为机试》——查找两个字符串a,b中的最长公共子串

本期给大家带来的是 华为机试题库 关于 查找两个字符串a,b中的最长公共子串 的讲解。首先,我们还是先从题目入手进行分析思考!!! 题目如下 :👇 查找两个字符串a,b中的最长公共子串。若有多个,输…

正则化的基本认识

正则化(一) 拟合与欠拟合(二) 正则化的目的(三) 惩罚项(3.1)常用的惩罚项:(3.2)L-P范数:(3.3)L1与L2的选择:(一) 拟合与欠拟合 欠拟合: 是指测试级与训练集都…

IDEA集成Git、GitHub、Gitee

一、IDEA 集成 Git 1.1、配置 Git 忽略文件 为什么要忽略他们? 与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。 怎么忽略? 创建忽略规则文件 xxxx.ignore(前缀名随便起&#xff0c…

〖Python网络爬虫实战⑫〗- XPATH语法介绍

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费…

java 通过 spring 官网创建springboot项目

文章java简单一写一个springboot入门案例带大家用idea工具工具创建了一个springboot简单的小案例 但有时 我们idea如果连不上网 就会有点问题 我们可以采用另一种创建方式 但这里的前提肯定就是 你的计算机是要有网的 然后访问 https://spring.io/ 打开spring的官网 在 Project…

SpringBoot基础使用

SpringBoot基础使用1.SpringBoot简介2.SpringBoot项目创建3.RESTful Web 服务4.SpringBoot 实现WebMvcConfigurer拦截器4.1 WebMvcConfigurer介绍4.2 WebMvcConfigurer接口常用方法4.3 WebMvcConfigurer拦截器5.SpringBoot常用注解总结6.SpringBoot异常处理6.1 使用 Controller…