之前从网上一个博主的博客里面看到有关论文阅读记录的博文,博主在看完每一篇论文后都会进行相关总结和思考记录。个人觉得这是个不错的习惯,遂学习了下,刚好对最近看的几篇论文进行简单的记录。
论文地址:V-Shuttle:Scalable and Semantics-Aware Hypervisor Virtual Device Fuzzing
1.1 基本介绍:
这篇文章是潘神在2021年CCS上发表的一篇fuzzing相关论文,论文拿了CCS2021年的best paper(国内唯一)。fuzzing对象是虚拟化技术的核心组件hypervisor(虚拟机管理程序)中的虚拟设备(virtual device),应该属于云计算安全、虚拟化技术、fuzzing、二进制漏洞挖掘与应用等相关领域。

1.2 大致内容:
传统使用随机输入、覆盖引导、结构感知的方法对hypervisor中大部分虚拟设备进行fuzzing,会存在效率低下、覆盖率低、可扩展性差等问题。本文研究了造成这些问题的核心在于:通过DMA传输的数据结构具有高度嵌套特性。后续作者通过对qemu的hypervisor中与DMA操作相关的api进行hook,将对虚拟机用户内存数据的读取重定向到了fuzzer的testcase中,以此来解决传统fuzzing突变指针字段会导致无效内存访问的问题。在前面基础上,作者再通过数据流分析方法(活变量)对每种类型DMA对象的数据结构进行标记、分组构建种子池(seedpool),实现了语义感知的功能,来引导fuzzing过程中testcase的构建。
1.3 结论:
作者提出的对hypervisor中虚拟设备可扩展和语义感知的fuzzing框架,相较于之前的研究来说:
1.4 思考:
文章中提到该框架的相关问题主要有:要求目标设备代码开源,因为需要进行相关hook操作(这个应该不是问题,只要得到官方授权应该可以弄到源码)、不能自动恢复POC,因为fuzzing引擎是集成在hypervisor主机进程中(有点没弄懂,是需要手动构建漏洞利用脚本的意思?)、对hypervisor内部状态的细粒度感知不够(v-shuttle的工作过程中,目标系统内部状态一直存在,但相同输入在不同的内部状态下可能执行不同的代码路径)。
个人觉得这篇文章的亮点主要在于:
2.1 基本介绍
这篇论文是中科院信工所孙利民老师指导的一篇fuzzing论文。fuzzing对象是ICS(工业控制系统)中的监控软件(也就是常见的上位机软件这些),应该属于工控安全领域。
2.2 大致内容
监控软件广泛用于ICS中,可被滥用来恶意控制或操纵物理设备(PLC等),危机生产过程甚至人类生命。本论文提出了一个可移植化、模块化的模糊框架来自动发现监控软件和现场设备之间通信协议中的bug。针对协议逆向需要大量人工工作的问题,该方法通过GUI操作和网络通信的同步控制,实现了整个监控软件的运行和模糊测试,避免了对协议实现模块的分析和提取。基于监控软件的执行轨迹和相应输入,构造一个状态记录本,同时提出一种状态选择算法来找出更容易出现bug的协议状态,进而为fuzzer分配更多这些状态的输入。
2.3 存在的挑战性
2.4 相关解决方法
2.5 结论
本文提出一个针对ICS监控软件的可定制、模块化的fuzzing框架,以支持不同监控软件协议实现方面的漏洞检测。给定监控软件的功能,作者可以构建一个通信模板来基于捕获的消息模拟会话,在网络和GUI行为自动同步的帮助下,ICS3 Fuzzer可以达到任何输入状态,并定向提供突变的输入,通过在4个不同的商业监控软件上实验,发现了13个漏洞。
2.6 思考
这篇文章的fuzzing对象是ICS系统的监控软件,通俗点理解应该就是PLC上位机软件。感觉一定程度上还是从流量的角度来对软件进行fuzzing,进而挖掘上位机软件的协议漏洞。整体的框架中,Fuzzer似乎就模拟成了一个虚拟PLC,作为为上位机提供响应的角色。感觉关键思想在于:通过捕获的流量包来制作字典,能匹配请求的响应就送出去,无法匹配(过于复杂)的复杂请求,就交给真实的PLC处理。这个思想和虚拟化工控蜜罐的思想好像差不多欸?然后在此基础上,动态选择感兴趣的状态(输入)来模糊测试软件?
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
我正在尝试按Rails相关模型中的字段进行排序。我研究的所有解决方案都没有解决如果相关模型被另一个参数过滤?元素模型classItem相关模型:classPriority我正在使用where子句检索项目:@items=Item.where('company_id=?andapproved=?',@company.id,true).all我需要按相关表格中的“位置”列进行排序。问题在于,在优先级模型中,一个项目可能会被多家公司列出。因此,这些职位取决于他们拥有的company_id。当我显示项目时,它是针对一个公司的,按公司内的职位排序。完成此任务的正确方法是什么?感谢您的帮助。PS-我
我怀念ipython的一件事是它有一个?为特定功能挖掘文档的运算符。我知道ruby有一个类似的命令行工具,但是我在irb中调用它非常不方便。ruby/irb有类似的东西吗? 最佳答案 Pry是IPython的Ruby版本,它支持?命令来查找有关方法的文档,但语法略有不同:pry(main)>?File.dirnameFrom:file.cinRubyCore(CMethod):Numberoflines:6visibility:publicsignature:dirname()Returnsallcomponentsofthef
假设您有一个可执行文件foo.rb,其库bar.rb的布局如下:/bin/foo.rb/lib/bar.rb在foo.rb的header中放置以下要求以在bar.rb中引入功能:requireFile.dirname(__FILE__)+"../lib/bar.rb"只要对foo.rb的所有调用都是直接的,这就可以正常工作。如果你把$HOME/project和符号链接(symboliclink)foo.rb放入$HOME/usr/bin,然后__FILE__解析为$HOME/usr/bin/foo.rb,因此无法找到bar.rb关于foo.rb的目录名.我意识到像rubygems这
术语中文解释Ability原子化服务帮助用户完成任务的原子化服务,和用户的意图进行关联。Fulfillment服务履行通过图标,卡片,语音等形式呈现用户意图。开发者通过接口的方式,处理用户意图,返回内容。Intent意图用于表达用户想要达成的目标或完成的任务。HUAWEIAssistant智能助手“无微不智”的个人助手,通过不断的学习用户的使用习惯,不断的为用户提供贴心的精准的便捷的个性化服务。AISearch全局搜索用户可快速搜索关键词,与之匹配的原子化服务则会出现在搜索结果中。SmartService智慧服务用户订阅原子化服务,在到达特定触发条件(时间、地点、事件)后,卡片推送至用户智能助
写在之前Shader变体、Shader属性定义技巧、自定义材质面板,这三个知识点任何一个单拿出来都是一套知识体系,不能一概而论,本文章目的在于将学习和实际工作中遇见的问题进行总结,类似于网络笔记之用,方便后续回顾查看,如有以偏概全、不祥不尽之处,还望海涵。1、Shader变体先看一段代码......Properties{ [KeywordEnum(on,off)]USL_USE_COL("IsUseColorMixTex?",int)=0 [Toggle(IS_RED_ON)]_IsRed("IsRed?",int)=0}......//中间省略,后续会有完整代码 #pragmamulti_c
TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是