LAVA: Large-scale Automated Vulnerability Addition

LAVA是一种自动向源代码中插入大量真实漏洞的语料库技术,旨在评估和改进漏洞发现工具。它通过动态染色分析识别可利用的数据(DUAs),并在程序中插入代码以触发特定的漏洞,如越界读写、除以零等。LAVA的目标是创建丰富、代表性的漏洞数据集,用于研究和测试。通过分析PANDA日志,LAVA找到攻击点和DUAs,然后注入并测试漏洞。实验表明,LAVA能够在多个开源程序中插入大量可触发的bug。
摘要由CSDN通过智能技术生成

abstract

LAVA:一种基于动态染色的新技术,自动向源程序代码中插入大量的真实的bugs的的语料库。
每个LAVA的bug都可以由一个完整的input触发,而正常的输入是不可能做到这一点的。而且这些漏洞都是人合成的。

motivation

漏洞语料库(Vulnerability corpora)分为两种:historic和synthetic,真实的和人造的。real word的漏洞库包含的例子太少,用处不是很大。但是他们最接近我们真实想要的,因为他们嵌入到真实的代码中。相比人工漏洞库就好很多。

在漏洞语料库中bugs必须满足以下要求才能对研究,发展,评价是有用的:
(1)cheap和plentiful(丰富的)
(2)Span the execution lifetime of a program
(3)Be embedded in representative control and data flow(嵌入到有代表性的控制流和数据流中)
(4)提供一个可以作为存在性证明的输入
(5)一小部分可能的输入的清单

作者想要做的:通过向真实程序的源码中进行一些明智的和自动化的编辑来插入人工的漏洞——LAVA((Large-scale Automated Vulnerability Addition)),

scope

LAVA的作用:可以评估和发展漏洞发现技术和系统。
当前关注于:插入代码可以导致由攻击者控制的输入造成的越界读写,还会有其他扩展,也可以有输入导致其他的bug。

LAVA overview

lava向程序中添加bugs按照以下步骤,需要满足以下要求,给定程序在特定输入上的程序执行跟踪:
(1)识别可用字节的执行跟踪位置,这些位置不用于决定控制流,而且没有进行太多的修改。称这些为DUAs:死去的,简单的,可利用的数据。
(2)在程序跟踪中找到DUA之后可能的攻击点。
(3)在程序中添加代码使得DUA的值在攻击点可获得,并用它触发漏洞。

DUA

因为他们确信攻击者可控制的数据是可以影响程序的执行的,DUA是我们构造bugs的原材料。在程序中通过对特定的输入用动态染色分析运行程序来识别DUA。染色分析包含以下几个很重要的特征:
(1)输入的每个字节都有自己的标签,因此,如果一个内部的程序数量被打标签了,我们可以将这个数量映射回输入的特定部分。
(2)染色分析尽可能的完整和正确,所有的程序代码(包括library和kernel)都会受到染色分析。多线程和进程也会正确的处理,所以染色流不会丢失。
(3)染色分析跟踪程序数据的每个字节的一组标签,意味着它可以表示
混合输入的计算。

每个被染色过的程序变量是输入字节的一些函数。我们通过新的测量值TCN(Taint Compute Number)来估计这个函数的复杂程度。TCN仅跟踪从输入字节获得数量所需的计算树的深度。较小的TCN用于程序数量越接近计算输入。如果TCN是0,则数量是输入字节的直接副本。这个测量背后的直觉是我们需要在计算上接近输入的DUA。以便能够以可预测的结果使用它们。

值得一提的是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值