本文主要是介绍LAVA: Large-scale Automated Vulnerability Addition,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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。以便能够以可预测的结果使用它们。
值得一提的是TCN不是一个理想的测量值,显然,在计算树很深的情况下,结
这篇关于LAVA: Large-scale Automated Vulnerability Addition的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!