首页 > 其他分享 >论文阅读笔记——LAVA: Large-scale Automated Vulnerability Addition

论文阅读笔记——LAVA: Large-scale Automated Vulnerability Addition

时间:2023-10-30 23:11:05浏览次数:39  
标签:scale Addition Vulnerability 程序 LAVA 漏洞 源代码 PANDA 注入

LAVA: Large-scale Automated Vulnerability

Addition

Brendan Dolan-Gavitt∗, Patrick Hulin†, Engin Kirda‡, Tim Leek†, Andrea Mambretti‡, Wil Robertson‡, Frederick Ulrich†, Ryan Whelan† (Authors listed alphabetically) ∗New York University [email protected] †MIT Lincoln Laboratory {patrick.hulin, tleek, frederick.ulrich, rwhelan}@ll.mit.edu ‡Northeastern University {ek, mbr, wkr}@ccs.neu.edu

I. 引言

  自动化漏洞发现工作的进展一直受到缺乏可用于评估工具和技术的真实语料库的限制。缺乏这样的语料库导致工具的作者和用户都不能够衡量诸如漏报和误报率等基本量。

  LAVA是一种基于动态污染分析的崭新技术,可以快速并自动地向程序源代码中注入大量真实的漏洞。LAVA的每个漏洞都伴随着一个可以触发它的输入,而正常的输入极不可能做到这一点。

II. 方法论

  1、LAVA的技术基础

动态污染分析和源代码注入技术。

动态污染分析:是一种在运行时检测程序中数据流动的技术。它通过跟踪程序执行过程中数据的流动,来识别潜在的安全问题。在LAVA中,动态污染分析用于确定哪些数据可能被恶意利用,从而识别出潜在的攻击向量。

源代码注入技术:是将修改后的源代码插入到程序中,以达到改变程序行为或引入安全漏洞的目的。在LAVA中,源代码注入技术被用于在程序的特定位置引入新的代码,这些代码可以用于触发已知的安全漏洞或引入新的漏洞。

  2、LAVA的运作流程

①在给定程序的一些特定输入上,我们通过程序的执行轨迹来确定哪些地方有可用的输入字节,这些字节不会确定控制流并且没有做太多的修改。我们称这些输入字节为DUAs,即Dead  (死亡的)、Uncomplicated(不复杂的)和Available(可用的)数据。

这里的意思是在程序的执行过程中,有些输入的字节可能并未影响到程序的执行流程(也就是说它们并没有触发任何跳转或者改变控制流的动作),或者这些字节并未被显著地修改。这些字节被称为“死亡的、未复杂的和可用的数据”(DUA)。

②在程序轨迹中,找到在DUA之后的可能的攻击点。攻击点是源代码的位置,其中DUA可能被使用,如果它也可以在那里可用的话,来使程序变得脆弱。

这里的“攻击点”指的是在程序执行过程中,那些可能在DUA可用之后进行攻击的位置。这些攻击点可能会利用DUA来让程序出现漏洞。

③向程序添加代码,使DUA的值在攻击点可用,并使用它来触发漏洞。

这是说,为了使DUA在攻击点可用,我们需要在程序中添加一些代码。然后,利用这个可用的DUA,我们可以在攻击点触发程序的漏洞。

如:

 

  3、选择注入目标的标准和考虑的因素

LAVA会选择重要的、可达性高、可利用性强、稳定性好且可控制性高的函数或系统调用作为注入目标,以实现更准确、可靠的安全漏洞发现和评估。

III. 实现细节

LAVA 分四个阶段对 Linux C 源代码中的缓冲区溢出漏洞进行注入和验证。

1、LAVA工具的设计

  • 动态污染分析模块:该模块使用PANDA和Clang来执行动态污染分析,以识别潜在的漏洞注入点。

PANDA是一个轻量级的动态二进制插桩框架,用于收集程序的执行轨迹数据。

Clang是一个C/C++编译器,用于将源代码编译成可执行文件。在LAVA中,使用Clang进行动态污染分析,以识别潜在的漏洞注入点。

  • 源代码注入模块:该模块负责将修改后的源代码插入到程序中,以引入新的漏洞注入点。在LAVA中,使用Clang进行源代码注入,通过修改程序的二进制文件来引入新的代码。
  • 漏洞验证模块:该模块负责测试经过源代码注入后的程序,以确定是否引入了新的安全漏洞。在LAVA中,使用目标输入变化来测试每个潜在的有漏洞的二进制文件,以确定是否发生了缓冲区溢出等安全漏洞。

2、LAVA工具的实现

A. Taint queries

LAVA的污染查询依赖于PANDA动态分析平台,它是基于QEMU全系统仿真器。通过跟踪程序中的数据流,确定哪些数据可能被恶意利用,并在这些数据上应用标记或“污染”技术。在实现taint queries时,需要将标记指令插入到目标程序的源代码中,以便在程序执行期间收集数据流信息。

B. Running the program

在PANDA平台上运行目标程序时,需要将目标程序加载到PANDA平台上,并监控其执行过程。PANDA平台具有插件架构和动态污染分析能力,可以支持taint queries等分析功能。使用PANDA平台可以方便地进行迭代和分析。

C. Mining the Pandalog

从PANDA平台生成的事件日志(Pandalog)中挖掘信息是关键步骤之一。解析和分析Pandalog可以提取有关程序执行过程的有用信息,如函数调用关系、参数传递等。这些信息将用于发现潜在的漏洞注入点。通过挖掘Pandalog可以提高对目标程序的深入理解,从而发现更多的漏洞。

D. Inject and test bugs

将漏洞注入到目标程序中进行测试验证是整个过程的最后一步。首先需要使用PANDA平台的插件架构开发用于漏洞注入的插件。然后,将漏洞注入到目标程序的特定位置,如函数调用处。接下来,对经过漏洞注入的程序进行测试验证,以确定是否引入了安全漏洞。最后,对发现的漏洞进行修复和验证。

 

IV. 结果分析与评估

 

  • 使用模糊测试和其他自动化工具对注入的漏洞进行检测。
  • 比较各种工具的效能,包括已知漏洞的检测率和误报率。
  • 分析各种因素对工具效能的影响。

V. 结论和未来工作

  • LAVA的优点和局限性。
  • 对其他自动化漏洞发现工具的启示和影响。
  • 对未来工作的建议和展望。

标签:scale,Addition,Vulnerability,程序,LAVA,漏洞,源代码,PANDA,注入
From: https://www.cnblogs.com/Akkk-520/p/17799153.html

相关文章

  • 论文阅读:Learning Semantic Segmentation of Large-Scale Point Clouds With Random S
    LearningSemanticSegmentationofLarge-Scale PointCloudsWithRandomSampling用随机抽样法学习大规模点云的语义分割摘要我们研究了大规模三维点云的有效语义分割问题。由于依赖昂贵的采样技术或计算量大的前/后处理步骤,大多数现有的方法只能在小规模的点云上进行训练和操......
  • 论文:Very deep convolutional networks for large-scale image recognition-VGG
    论文名:Verydeepconvolutionalnetworksforlarge-scaleimagerecognition"用于大规模图像识别的深度卷积网络"了解VGG模型研究问题:研究方法:主要结论:模型:问题:行文结构梳理:......
  • 虹科产品丨HK-TrueNAS SCALE可使用公共云存储
    HK-TrueNASSCALE用户现在可以用AWS、Azure和GCP的一小部分成本获得公共云存储。提供NAS软件的虹科iXsystems公司正在与StorJ合作,利用StorJ的分散式云存储提供全球分布式存储(GDS)服务,作为主要公共云的低成本替代品。该云有超过13,000个活动节点,可存储390亿个对象,耐用性达......
  • [abc306h/ex] Balance Scale
    Ex-BalanceScale考虑只有>和<的情况,相当于给每条边定向,当且仅当成环时不合法,那么方案数就是\(DAG\)的方案数对于=,就是将两个点合并然后对于一般的求\(n\)个点的\(DAG\)的方案数为\(\sum_{i=1}^n(-1)^{i+1}C_n^i2^{i\times(n-i)}\)(枚举入度为\(0\)的点的数量,然后设入度为\(0......
  • Go - Converting an Image to Grayscale
    Problem: Youwanttoconverttheimagetograyscale.Solution: Convertanimagetoagridofpixels.Takeeachpixelinthegridandconvertittoagraypixelaccordingtotherelativeluminanceformula.Convertthegridofpixelsbackintoanimageto......
  • AtCoder Regular Contest 123 F Insert Addition
    洛谷传送门AtCoder传送门用\((x,y)\)表示\(Ax+By\),那么这个等价于SB树。那么直接在SB树上二分,遍历一遍找到\(n\)个点就好了。可以采用类似线段树查询的方式。于是现在还剩下一个子问题:给定\(a,b\),求\(ax+by\len\)且\(\gcd(x,y)=1\)的正整数\((x,y......
  • ultraScale AC3UEG 启动打印记录
    U-Boot2020.01(Dec132022-03:00:01+0000)Board:XilinxZynqMPDRAM:4GiBPMUFW:v1.1ELLevel:EL2ChipID:zu3egNAND:0MiBMMC:mmc@ff160000:0,mmc@ff170000:1In:serial@ff000000Out:serial@ff000000Err:serial@ff000000Bootmode......
  • 米联客MLK-CU02-ku3p-ku5p AMD UltraScale+核心模块硬件手册
    1产品概述KintexUltraScale+MKU3P/KU5P是米联客电子KintexUltraScale+系列开发平台的全新高端产品。其核心模块集成电源管理:0.85V核心电源,最大输出24A。用户基于核心模块设计功能底板(提供功能底板设计方案)。降低项目功能底板设计难度和生产成本,加速项目开发。其应用领域包含高......
  • 米联客MLK-CU01-040-060 AMD UltraScale核心模块硬件手册
    1整体概述MLK-CU01-040-060核心模块是米联客电子KintexUltraScale系列开发平台的全新高端产品。其核心模块集成电源管理:0.95V核心电源,最大输出24A。用户基于核心模块设计功能底板(提供功能底板设计方案)。降低项目功能底板设计难度和生产成本,加速项目开发。其应用领域包含高速通......
  • 【CVPR2022】Shunted Self-Attention via Multi-Scale Token Aggregation
    来自CVPR2022基于多尺度令牌聚合的分流自注意力论文地址:[2111.15193]ShuntedSelf-AttentionviaMulti-ScaleTokenAggregation(arxiv.org)项目地址:https://github.com/OliverRensu/Shunted-Transformer一、Introduction还是经典的ViT的历史遗留问题:ViT中的自注意力计算......