01《Detecting Software Attacks on Embedded IoT Devices》随笔

2023.08.05
今天读的是一篇博士论文
论文传送门:Detecting Software Attacks on Embedded IoT Devices
看了很长时间,发现有一百多页,没看完,没看到怎么实现的。

摘要

联网设备的增加使得嵌入式设备成为各种网络攻击的诱人目标,攻击者可以通过访问和控制远程设备进行恶意活动。这些物联网设备可以被攻击者利用,在不需要任何物理硬件访问的情况下破坏受害者平台的安全性。
为了检测此类软件攻击并确保可靠和值得信赖的物联网应用程序,验证设备未受到恶意软件的侵害,并断言程序的正确执行至关重要。在文献中,已经提出了基于远程认证、异常检测、控制流和数据流完整性的解决方案来检测软件攻击。然而,这些解决方案在目标部署和攻击检测方面的适用性有限,我们对此进行了彻底的检查。
在本文中,我们提出了三种检测嵌入式物联网设备软件攻击的解决方案。特别是,我们首先提出了SWARNA,它使用远程认证来验证嵌入式设备的大型网络,并确保设备上的应用软件不被篡改。验证软件的完整性可以保留设备的静态属性。为了保护设备免受各种软件攻击,还必须确保程序的运行时执行符合预期。因此,我们广泛关注于检测程序执行期间可能发生的内存损坏攻击。此外,我们提出了在嵌入式物联网设备上运行的安全程序异常检测SPADE和OPADE,分别使用深度学习和机器学习算法来检测各种运行时软件攻击。我们在真实的嵌入式硬件和物联网测试平台上评估和分析所有提出的解决方案。我们还进行了全面的安全性分析,以展示所建议的解决方案如何检测各种软件攻击。
在这篇论文中,我们提出了三种识别嵌入的ios设备软件的方法。首先我们介绍SWARNA,它用远程照相功能审查了一个大规模嵌入设备网络,确保在设备上没有被操纵。这个机器用了静态性质为了保护设备免受各种软件攻击,必须确保所执行的项目如预期的那样在持续时间内完成。因此,我们主要致力于识别对系统运行过程中可能出现的内存的攻击。我们呈现多种多样的软件突击队和OPADE,让他们可以安全检测嵌入的特别智能设备中的项目异常情况,并使用深层学习算法来识别整个运行过程中软件的攻击行为。

介绍

  • 软件的攻击:
    上述攻击要么篡改应用程序二进制文件,要么破坏运行时内存,以获得对设备的控制。
  • 防御的方法:
    远程认证、控制流完整性(CFI)和程序异常检测是目前广泛提倡的检测各种软件攻击的技术。远程认证是远程验证在嵌入式设备上运行的软件的完整性或程序的运行时控制流的一种重要方法。在远程认证中,外部可信实体验证物联网设备,并且本质上是被动的。CFI是一种预防机制,它监视设备上程序在执行时的控制流,确保它遵循预先确定的合法路径。
    然而,CFI和远程认证不能捕获程序的非确定性运行时特征(例如,在运行时执行if-else语句)。另一方面,程序异常检测技术使用各种特征来捕获程序的行为。即使运行时行为与正常执行相比有细微的偏差,也会被标记为异常。
  • 挑战
    为了确保物联网应用真正值得信赖和可靠,必须
    (i)确保设备不受恶意软件的侵害
    (ii)断言嵌入式控制程序的正确执行
    (iii)最后确保所提议的攻击检测机制本身是安全的。已经提出了广泛的解决方案来检测嵌入式物联网设备的软件攻击。
    由于嵌入式设备上的资源有限,确保设备安全的目标通常被转移到具有无限资源的远程实体

贡献

  • 攻击分类:在过去的几十年里,我们可以在物联网设备上找到各种攻击。在本文中,我们定义并将攻击分为不同的类别,这有助于我们设计针对攻击类的防御解决方案。
  • 基于软件的远程网络认证:为了满足物联网部署规模和数量的增长,我们提出了基于软件的远程网络认证(SWARNA),这是一种用于验证远程物联网设备群的系统。SWARNA建立了一个确定性的通信路径,强制跨无线多跳物联网网络的时间限制,用于认证目的。
  • 安全程序异常检测:为了在程序运行时检测内存损坏攻击,我们提出了一种用于嵌入式物联网设备(SPADE)的安全程序异常检测。
  • 在线程序异常检测:我们首先介绍行为控制异常(BCA),这是一种在程序执行过程中看到的异常,通过修改程序的一个或几个控制方面来影响程序的行为。我们进一步将异常分为控制流异常(CFA)、控制分支异常(CBA)和控制强度异常(CIA)。
    我们为嵌入式物联网设备(OPADE)设计了一个在线程序异常检测。OPADE通过其精确的调用位置、调用函数调用的次数和使用硬件计数器的循环执行周期计数来捕获函数调用序列。OPADE实现了一种基于分层时间记忆(HTM)的异常检测技术,该技术支持序列和持续学习,不需要像其他神经网络算法那样单独收集数据和进行训练。与SPADE类似,OPADE在可信执行环境中运行。我们评估了OPADE在检测bca时的异常检测精度及其开销。

论文声明

在本文中,我们介绍了通过保护嵌入式物联网设备来构建值得信赖和可靠的物联网应用的方法。我们提出了一个系统来共同验证远程物联网设备上运行的软件的完整性,并进一步提出了两种解决方案,这两种解决方案在设计上是安全的,可以检测在程序运行时执行期间发生的内存损坏攻击,并且与最先进的检测技术相比,可以在运行时检测对嵌入式设备的更广泛的攻击。

路线图

背景

对嵌入式物联网设备的攻击

在本章中,我们提供了对理解本论文至关重要的攻击和基本防御机制的基本信息。首先,我们在2.1节中对针对嵌入式物联网设备的攻击进行了大致分类。然后,我们在2.2节中详细描述了软件攻击,因为本文的重点是检测软件攻击。我们将软件攻击大致分为软件篡改攻击和内存破坏攻击,分别在2.2.1节和2.2.2节中描述。我们还回顾了最突出的内存损坏攻击:面向控制和面向数据的攻击。最后,在2.3节中,我们解释了用于检测软件攻击的远程认证的工作原理。
我们将针对嵌入式物联网设备的攻击大致分为两类:软件攻击和硬件攻击。图1显示了针对嵌入式物联网的攻击分类。根据文献,我们将仅损害设备软件(即驻留在设备上的代码和数据)的攻击分类为软件攻击。对于软件攻击,攻击者可以利用代码中的漏洞来控制目标设备,从而可能导致灾难性的后果。攻击者可以远程执行软件攻击,使其成为一种简单而广泛的攻击选择。
在这里插入图片描述
捕获设备并对其进行物理篡改的攻击被归类为硬件攻击[61,71]。使用昂贵和复杂的设备直接访问设备内部组件的硬件攻击被称为侵入性攻击。使用低成本电气工程工具提取存储在设备上的加密材料的硬件攻击被称为非侵入性攻击。著名的侧信道攻击是一种非侵入性攻击,它利用电磁辐射、电力或时间在设备正常运行期间提取敏感数据。
本文以软件攻击为研究重点,提出了几种检测各种软件攻击的解决方案。因此,在接下来的章节中,我们将对软件攻击进行深入的描述。

软件攻击

当攻击者修改设备上的代码或数据时,攻击被定义为软件攻击。我们进一步将软件攻击分类为软件篡改攻击和内存损坏攻击。

软件篡改攻击

这里的攻击者能够利用源代码或部署设置中的漏洞,在部署之前或之后修改应用程序二进制文件。除了应用软件,攻击者还可以修改设备上的任何配置设置。但是,应用程序二进制文件或设备配置通常驻留在设备的非易失性存储器中(在设备重新启动后仍然存在),并且在程序执行期间不会更改。
因此,我们将仅篡改设备静态属性的攻击定义为软件篡改攻击。

内存损坏攻击(程序运行时攻击)

在程序执行期间,应用程序生成各种运行时信息,这些信息存储在易失性内存中(在设备重新启动时重置)。通常在嵌入式设备中,运行时信息存储在位于易失性RAM上的堆栈或堆中。攻击者可以利用应用程序软件中的漏洞(如缓冲区溢出)来修改应用程序的运行时数据。因此,我们将修改运行时内存内容的攻击归类为内存损坏攻击。由于内存损坏攻击发生在应用程序执行期间,在文献中,内存损坏攻击也被称为运行时攻击
根据内存中修改的数据,内存损坏攻击可以进一步分为面向控制的攻击面向数据的攻击

面向控制的攻击

在面向控制的攻击中,攻击者在程序执行期间修改驻留在内存中的程序的控制信息(例如,返回地址、代码指针)。攻击者的目的是转移程序的预期执行流。通过破坏控制流,攻击者可以触发一个或多个恶意操作,例如访问敏感数据、非法执行程序或注入恶意软件。
面向控制的攻击大致可分为:
(1)代码注入攻击
(2)代码重用攻击。
在代码注入中,攻击者首先利用

面向数据的攻击

在文献中,几种类型的攻击破坏非控制数据以改变程序的行为。面向数据的攻击可分为
(1)直接数据操作
(2)面向数据的编程
在直接数据操纵中,攻击者直接改变非控制数据变量以达到所需的恶意目的。在这里,攻击者应该知道目标变量的精确地址。二进制分析或导出存储在存储器中的随机地址可以用来获得一个变量的目标地址。然后攻击者利用程序漏洞覆盖数据变量的内存位置。

防御:远程认证

首先,验证者创建一个唯一的挑战,并向远程证明者发送一个证明请求。
接下来,证明者执行一个证明例程来计算并向验证者发送一个证明响应。
最后,验证者将在认证响应中收到的证明者的状态与设备的预期状态进行比较。如果结果匹配,则验证者声明远程设备为可信设备;否则,远端设备不受信任。

文献综述

使用远程认证检测软件篡改攻击

内存损坏攻击防御

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

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

相关文章

c#设计模式-创建型模式 之 工厂模式

前言: 工厂模式(Factory Pattern)是一种常用的对象创建型设计模式。该模式的主要思想是提供一个创建对象的接口(也可以是抽象类、静态方法等),将实际创建对象的工作推迟到子类中进行。这样一来&#xff0c…

第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频)

deque容器 deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别 vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度比vector快 vector访问元素的…

cpu util margin,cpu freq margin

【cpufreq governor】cpu util 和 cpu margin怎么计算的_悟空明镜的博客-CSDN博客 cpu util margin,cpu freq margin 根据policy_util schedtune_margin 作为算力选对应的cpu cluster或调频

dubbo之整合SpringBoot

目录 zookeeper安装 1.拉取ZooKeeper镜像 2.新建文件夹 3.挂载本地文件夹并启动服务 4.查看容器 5.进入容器(zookeeper) Dubbo Admin安装 1.下载dubbo-admin 2.zip包解压 3.修改配置文件 4.打包项目 5.启动jar 6.访问 构建项目 api模块 1.创建…

24届近5年上海理工大学自动化考研院校分析

今天学姐给大家带来的是上海理工大学控制考研分析 满满干货~还不快快点赞收藏 一、上海理工大学 学校简介 上海理工大学(University of Shanghai for Science and Technology)是一所以工学为主,工学、理学、经济学、管理学、文…

php实现登录的例子

界面&#xff1a; 登录界面login.html代码&#xff1a; <!DOCUMENT html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"…

【word密码】word设置只读,如何取消?

Word文件打开之后发现是只读模式&#xff0c;那么我们如何取消word文档的只读模式呢&#xff1f;今天给大家介绍几种只读模式的取消方法。 属性只读 有些文件可能是在文件属性中添加了只读属性&#xff0c;这种情况&#xff0c;我们只需要点击文件&#xff0c;再次查看文件属…

sd-roop换脸插件安装

安装步骤 首先看官方教程 sd-webui-roop插件&#xff0c; 如下&#xff1a; 执行 pip install insightface0.7.3在web-ui 界面&#xff0c;插件菜单&#xff0c;从网址安装 https://github.com/s0md3v/sd-webui-roopweb-ui 界面重启如果遇到 NoneType object has no attribu…

状态模式——对象状态及其转换

1、简介 1.1、概述 在软件系统中&#xff0c;有些对象也像水一样具有多种状态&#xff0c;这些状态在某些情况下能够相互转换&#xff0c;而且对象在不同的状态下也将具有不同的行为。为了更好地对这些具有多种状态的对象进行设计&#xff0c;可以使用一种被称为状态模式的设…

基于边缘无线协同感知的低功耗物联网LPIOT技术:赋能智慧园区方案以及数字工厂领域

回到2000年左右&#xff0c;物联网的底层技术支撑还是“ZigBee”&#xff0c;虽然当时ZigBee的终端功耗指标其实也并不庞大&#xff0c;但是&#xff0c;“拓扑复杂导致工程实施难度大”、“网络规模小导致的整体效率低下”都成为限制其发展的主要因素。 LPWAN&#xff0c;新一…

基于kettle实现pg数据定时转存mongodb

mogodb 待创建 基于kettle实现pg数据定时转存mongodb_kettle 实时迁移 mongodb_呆呆的私房菜的博客-CSDN博客

Redis安装以及配置隧道连接(centOs)

目录 1.centOs安装Redis 2. Redis 启动和停⽌ 3. 操作Redis 2.Xshell配置隧道 1.centOs安装Redis #使⽤yum安装Redis yum -y install redis 2. Redis 启动和停⽌ #查看是否启动 ps -ef|grep redis#启动redis: redis-server /etc/redis.conf &#停⽌Redis redis-cli sh…

项目出bug,找不到bug,如何拉回之前的版本

1.用gitee如何拉取代码 本文为转载于「闪耀太阳a」的原创文章原文链接&#xff1a;https://blog.csdn.net/Gufang617/article/details/119929145 怎么从gitee上拉取代码 1.首先找到gitee上想要拉取得代码URL地址 点击复制这里的https地址 1 ps:&#xff08;另外一种方法&…

linux onlyOffice docker 离线部署

文章目录 前言1. 安装Docker容器2. 拉取镜像3. 验证 前言 docker 离线安装onlyoffice&#xff0c;如在线安装可直接跳过导出导入镜像步骤&#xff0c;拉取后直接运行。 1. 安装Docker容器 下载文件 wget https://download.docker.com/linux/static/stable/x86_64/docker-19…

x86 kgdb deug调试分析

本文主要是收集&#xff0c;以下文章写得很好&#xff0c;我二次整理一下。 如果要手动livedb. 1. call kdbg_arch_late() 2. kgd_set_hw_break(addr,8,1); 3. kgdb_correct_hw_break();// enable bp to cpu regs -------------------------------分割线----------------…

使用Automatic1111在本地PC上运行SDXL 1.0

这是我们部署Stable Diffusion的第三篇文章了&#xff0c;前两篇文章都详细介绍了Automatic1111的stable-diffusion-webui的安装&#xff0c;这次主要介绍如何使用SDXL 1.0模型。 获取项目 在本地获取Automatic1111’s WebUI项目&#xff0c;下载完成后应该是这个样子的 下载检…

(十二)大数据实战——hadoop集群之HDFS高可用自动故障转移

前言 本节内容主要介绍一下hadoop集群下实现HDFS高可用的自动故障转移&#xff0c;HDFS高可用的自动故障转移主要通过zookeeper实现故障的监控和主节点的切换。自动故障转移为 HDFS 部署增加了两个新组件&#xff1a;ZooKeeper 和 ZKFailoverController &#xff08;ZKFC&…

Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)

1.简介 在实际工作中&#xff0c;我们经常会听到数据库的性能和稳定性等等&#xff0c;这些有时候也需要测试工程师去评估和测试&#xff0c;因此这篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家&#xff0c;希望对各位小伙…

干货分享|Elsevier投稿进度查询功能正式上线,随时获取投稿状态!

想必广大科研学者们都经历过每天登录系统查看投稿进度的煎熬过程&#xff0c;为了方便广大科研人随时获取投稿状态&#xff0c;2023年8月&#xff0c;Elsevier【微信端投稿进度查询功能】正式上线&#xff01; 无论你是通讯作者还是共同作者&#xff0c;只需一次查询&#xff…

实现vuex数据持久化处理

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 前言&#xff1a; 方案一 localStorage 介绍 值 示例 JSON.stringify() 介绍 语法 参数 返…