当前位置: 首页 > news >正文

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

介绍

这是一篇来自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%。
在这里插入图片描述
在这里插入图片描述

相关文章:

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

介绍 这是一篇来自2021CCS的论文,作者有Nanzi Yang, Wenbo Shen, Jinku Li, Yutian Yang, Kangjie Lu, Jietao Xiao, Tianyu Zhou, Chenggang Qin, Wang Yu, Jianfeng Ma, Kui Ren。 概述 本文的贡献如下: 新的攻击面:作者揭示了一个影响操…...

C# 提取 PDF 文档中的文本

C# .Net 使用 IText7 从PDF文件中提取出所有文本内容 【文 / 张赐荣】 首先在 Nuget 包管理器中,安装"itext7" 和 "itext7.font-asian"。 如果不安装 "itext7.font-asian" PDF 文件中有非Unicode编码的字符,将会抛出运行时异常:iText.IO.Excep…...

mac如何升级node版本、切换node版本

一、mac如何升级node版本 当前官网稳定版本是18.15.0 所以我从v14.17.4升级到v18.15.0 二、mac如何切换node版本 切换到16.20.0版本 三、这里是用node.js的多版本管理器n来升级和切换的,命令如下: 1、sudo npm cache clean -f //清除node.js的cache …...

一位大专学历的女程序员要求月薪25K,学历重要吗?来看看面试过程

“请提供一份完整的简历,以便我审查。从您的简历中,我感觉您写得还不错。方便的话,您可以自我简单介绍一下吗?“ ”好的,我叫李娟,拥有大专学位,目前正在寻找一份Java开发架构师的工作岗位。“…...

ESP32驱动1.28寸GC9A01播放视频(一、视频分辨率的调整和视频格式的转换)

ESP32驱动1.28寸GC9A01播放视频(一、视频分辨率的调整和视频格式的转换)播放前准备转换视频分辨率用FFmpeg将.MP4转换为.mjpeg格式FFmpeg的win10环境搭建FFmpeg的下载环境变量的搭建MP4转换成mjpeg格式总结播放前准备 1.28寸GC9A01屏幕的分辨率是240x24…...

epoll的LT模式(水平触发)和ET模式(边沿触发)

前言 epoll的触发模式是个引发讨论非常多的话题,网络上这方面总结的文章也很多,首先从名字上就不是很统一,LT模式常被称为水平触发、电平触发、条件触发,而ET模式常被称为边缘触发、边沿触发等,这些都是从英文翻译过来…...

Java基础面试20题

Java的八大基本数据类型 答:可以分4种类型:布尔类型(boolean),字符类型(char),浮点类型(double,float),整型(byte,short,int, long)。 String,StringBuffer与StringBuilder的区别? …...

Java面向对象封装

目录 封装的概念 封装具体实现步骤 示例代码如下 封装具体语法 封装的概念 Java封装是一种面向对象的编程方法,它的主要思想是将类的内部细节(包括数据和方法)隐藏起来,对外只提供公共的访问接口,从而保证了程序的安全性和稳定性。 封装具体实现步骤 1、声明类的成…...

队列实现图书信息管理(C语言)

文章目录Queue.hmain.cQueue.c用队列实现一个图书信息管理,这里放一下有哪些文件。(ps:我之前写的是学生信息管理,但是有人说我们的作业是写图书,就该了下内容,没有改文件名)队列是用链表实现的…...

Java开发 - 读写分离初体验

前言 上一篇中,我们介绍了主从复制,相信学过的小伙伴已经能够很好的掌握主从复制的技术,实际上也并没有那么难,虽然没有讲一主多从,多主多从的配置,但是从一主一从的配置中也很容易联想到该怎么配置&#…...

图文详解CAN Log文件 - ASC文件格式

目录 1 CAN Log文件 -- ASC文件格式 1.1 Header 1.2 版本编号 1.3 经典CAN网络中的描述 1.3.1 经典CAN Standard标准帧的描述 1.3.2 经典CAN Extended扩展帧的描述 1.3.3 CAN Remote远程帧的描述 1.3.4 CAN Error错误帧的描述 1.4 CANFD网络中的描述 1.4.1 经典CAN S…...

网络编程套接字(一)

学习任务: 我们先来认识端口号,区分好主机IP和端口号的区别,以及涉及到进程PID和端口号的区别。 然后简单认识一下TCP协议和UDP协议,这两个协议都是传输层的。接着了解什么是网络字节序,它有什么作用。然后是网络编程的…...

Mysql数据库存储过程

1、参数分类 存储过程的参数类型可以是IN、OUT和INOUT。根据这点分类如下: 1、没有参数(无参数无返回) 2、仅仅带 IN 类型(有参数无返回) 3、仅仅带 OUT 类型(无参数有返回) 4、既带 IN 又带 O…...

当我开始学习人工智能:人工智能的学派及研究目标

上课真是不认真啊,现在都写不来了作业了,真的会谢 一、人工智能的学派及其争论 1.1 对人工智能方法的争论 三个学派 符号主义 认为人的认知基元是符号,认知过程即符号操作过程。 认为人是一个物理符号系统,计算机也是一个物理符…...

Html5钢琴块游戏制作与分享(音游可玩)

当年一款手机节奏音游,相信不少人都玩过或见过。最近也是将其做了出来分享给大家。 游戏的基本玩法:点击下落的黑色方块,弹奏音乐。(下落的速度会越来越快) 可以进行试玩,手机玩起来效果会更好些。 点击…...

MySQL数据库——数据库设计概念和数据库设计步骤

数据库设计就是根据业务系统的具体需求,结合我们所选用的数据库,建立好表结构及表与表之间的管理关系,为这个业务系统构造出最优秀的数据存储模型的过程。使之能有效的对应用的数据进行存储,并高效的对已经存储的数据进行访问。 …...

【云原生】Kubernetes(k8s)之Pod概念和使用

k8s之Pod概念和使用一、Pod简介1.1、Pod的阶段(状态)1.2、容器状态二、Pod的定义2.1、restartPolicy2.2、imagePullPolicy2.3、command2.4、args2.5、resources三、Pod的使用3.1、创建并访问Pod3.2、多个应用容器3.3、Init容器3.3.1、Init容器与普通容器…...

数组(九)-- LC[316][321][402] 去除重复字母

1 移掉 K 位数字 1.1 题目描述 题目链接:https://leetcode.cn/problems/remove-k-digits/ 1.2 思路分析 这道题让我们从一个字符串数字中删除 k 个数字,使得剩下的数最小。也就说,我们要保持原来的数字的相对位置不变。 以题目中的 num1432…...

ubuntu下Thrift安装

thrift是一种常用rpc框架,工作中经常会用到,本文记录一下其安装过程。 目录 1.下载软件包 1.1thrift下载 1.2libevent下载 1.3boost下载 2.安装(注意步骤) 2.1安装libevent 2.2安装boost 2.3安装与Python2.7版本对应的py…...

读懂AUTOSAR :DiagnosticLogAndTrace DLT(四)-- API解析

一、周期调用的函数:Dlt_TxFunction 根据参数DltGeneralTrafficShapingSupport,决定如何去发送DLT消息。如果为TRUE,那需要参考参数DltLogChannelTrafficShapingBandwidth为每个Log通道设置发送带宽;如果为FALSE,那么…...

终极文档下载神器:30+平台一键免费保存,告别繁琐下载流程

终极文档下载神器:30平台一键免费保存,告别繁琐下载流程 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该…...

8B模型做生物实验:实验步骤顺序不乱、剂量无幻觉|ICLR 2026

Thoth团队 投稿量子位 | 公众号 QbitAI人类研究员做实验,从来不是把几句步骤随手拼起来。一份真正可复现的实验protocol,需要明确每一步做什么、对什么对象操作、用什么参数,以及步骤之间的先后依赖。一旦顺序错了、剂量错了、对象错了&#…...

使用SEGGER Ozone调试nRF9160 Zephyr多线程应用:从HardFault到线程可视化

1. 项目概述:为什么选择Ozone调试nRF9160 Zephyr应用如果你正在用Nordic的nRF9160开发物联网设备,并且选用了Zephyr RTOS作为软件基础,那么调试环节很可能会成为你项目中的一个“痛点”。nRF9160本身集成了Cortex-M33内核、蜂窝调制解调器和丰…...

泛微E-Office V10 OfficeServer 文件上传漏洞深度剖析与实战复现

1. 漏洞背景与影响范围 泛微E-Office作为国内广泛使用的协同办公系统,其V10版本中的OfficeServer.php组件存在高危文件上传漏洞。这个漏洞的本质在于服务端未对上传文件的类型、内容及路径进行严格校验,导致攻击者可以绕过常规防护机制,直接上…...

TSN网络仿真入门:除了OMNeT++,这几个开源框架(NeSTiNg/CoRE4INET)到底该怎么选?

TSN网络仿真框架深度选型指南:从OMNeT生态到实战避坑 引言:当TSN遇见仿真工具丛林 在工业自动化与车载网络领域,时间敏感网络(TSN)正成为实时通信的基础设施。但部署前的验证环节往往让研究者陷入两难——直接搭建物理测试床成本高昂&#xf…...

libhv实战:手把手教你用C++写一个带自动重连的WebSocket客户端(附避坑指南)

libhv实战:构建高可靠WebSocket客户端的工程化实践 在实时数据采集和监控系统中,WebSocket客户端的稳定性直接决定了业务连续性。当网络出现闪断、服务端重启或负载波动时,简单的连接断开可能导致关键数据丢失。libhv作为高性能网络库&#x…...

ChanlunX:通达信缠论分析的终极自动化解决方案

ChanlunX:通达信缠论分析的终极自动化解决方案 【免费下载链接】ChanlunX 缠中说禅炒股缠论可视化插件 项目地址: https://gitcode.com/gh_mirrors/ch/ChanlunX ChanlunX是一款专为通达信用户设计的开源缠论分析插件,通过智能算法将复杂的缠论理论…...

3分钟搞定游戏模组:BepInEx插件框架终极入门指南

3分钟搞定游戏模组:BepInEx插件框架终极入门指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx 想让你的游戏拥有无限可能?厌倦了游戏原有的玩法&#xff…...

机器人研发选3D打印还是CNC精密打样?

在机器人(尤其是人形机器人、协作机器人)的研发初期,工程师经常面临一个技术选型:为了验证原型,是直接送去 3D 打印,还是找一家精密零件加工厂做 CNC 打样?这个选择不仅关乎打样费用的支出&…...

如何快速掌握BepInEx插件开发:面向初学者的完整指南

如何快速掌握BepInEx插件开发:面向初学者的完整指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是Unity游戏插件开发的终极框架,让普通玩家也能…...