We use cookies to improve your experience with our site.

MEBS:挖掘操作系统内核中的内存生命周期漏洞

MEBS: Uncovering Memory Life-Cycle Bugs in Operating System Kernels

  • 摘要: 1、研究背景(context):
    操作系统内核中内存数据的分配、使用和释放是紧密相连的。我们称之为内存生命周期。
    2、目的(Objective):
    如果内存生命周期的正确性受到损害,这会带来重大的安全问题,如信息泄漏、拒绝服务和系统关闭,而且这样的情况大量存在。以前的工作没有意识到这一点。
    3、方法(Method):
    我们研究内核内存的生命周期,包括分配、使用和释放,并将其中的错误定义为内存生命周期漏洞。我们实现了用于内存生命周期漏洞检测的工具MEBS。我们利用过程间全局调用图和基于LLVM的新检测方法,包括基于特征的源函数识别和基于错误路径的汇函数识别,来检测内存生命周期漏洞。
    4、结果(Result&Findings):
    我们在最新的内核上进行实验。实验结果表明,MEBS可以有效地检测内存生命周期漏洞,并且可以扩展到不同的内核。我们在Linux和FreeBSD中暴露了100多个新漏洞,并获得了12个CVE。
    5、结论(Conclusions):
    内存生命周期漏洞广泛存在于操作系统内核中,并可能带来安全问题。定制的源函数和汇函数是内核中有趣的一部分内容。MEBS可以有效地检测内存生命周期漏洞。

     

    Abstract: Allocation, dereferencing, and freeing of memory data in kernels are coherently linked. There widely exist real cases where the correctness of memory is compromised. This incorrectness in kernel memory brings about significant security issues, e.g., information leaking. Though memory allocation, dereferencing, and freeing are closely related, previous work failed to realize they are closely related. In this paper, we study the life-cycle of kernel memory, which consists of allocation, dereferencing, and freeing. Errors in them are called memory life-cycle (MLC) bugs. We propose an in-depth study of MLC bugs and implement a memory life-cycle bug sanitizer (MEBS) for MLC bug detection. Utilizing an interprocedural global call graph and novel identification approaches, MEBS can reveal memory allocation, dereferencing, and freeing sites in kernels. By constructing a modified define-use chain and examining the errors in the life-cycle, MLC bugs can be identified. Moreover, the experimental results on the latest kernels demonstrate that MEBS can effectively detect MLC bugs, and MEBS can be scaled to different kernels. More than 100 new bugs are exposed in Linux and FreeBSD, and 12 common vulnerabilities and exposures (CVE) are assigned.

     

/

返回文章
返回