[解决方案]Linux内核中的算法堆布局操作

IF 1 Q3 SOCIOLOGY
Max Jens Ufer, Daniel Baier
{"title":"[解决方案]Linux内核中的算法堆布局操作","authors":"Max Jens Ufer, Daniel Baier","doi":"10.5070/sr33160040","DOIUrl":null,"url":null,"abstract":"To evaluate the severity of a security vulnerability a security researcher usually tries to prove its exploitability by writing an actual exploit. In the case of buffer overflows on the heap, a necessary part of this is manipulating the heap layout in a way that creates an exploitable state, usually by placing a vulnerable object adjacent to a target object. This requires manual effort and extensive knowledge of the target. With a target as complex as the Linux kernel, this problem becomes highly non-trivial. At the current time, there has been little research in terms of employing algorithmic solutions for this. In this work, we present Kernel-SIEVE, a framework for evaluating heap layout manipulation algorithms that target the SLAB/SLUB allocator in the Linux kernel. Inspired by previous work that targets user-space allocators [34–36] it provides an interface for triggering allocations/deallocations in the kernel and contains a feedback loop that returns the resulting distance of two target objects. With this, we create the (to our knowledge) first performance benchmarks for heap layout manipulation algorithms in the Linux kernel. We present and evaluate two algorithms: A pseudo-random search, whose performance serves as a baseline, and KEvoHeap, a genetic algorithm based on Heelan’s EvoHeap [34,36]. We show that KEvoHeap is successful at creating the desired heap layout in all test cases and also surpasses the user-space performance benchmarks of EvoHeap. Finally, we discuss the challenges of applying these kinds of algorithms in real-world scenarios and weigh different possible approaches to tackle the problems that arise. Our research results are publicly available on GitHub [18].","PeriodicalId":36882,"journal":{"name":"Journal of World-Systems Research","volume":"172 1","pages":""},"PeriodicalIF":1.0000,"publicationDate":"2023-02-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"[Solution] Algorithmic Heap Layout Manipulation in the Linux Kernel\",\"authors\":\"Max Jens Ufer, Daniel Baier\",\"doi\":\"10.5070/sr33160040\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"To evaluate the severity of a security vulnerability a security researcher usually tries to prove its exploitability by writing an actual exploit. In the case of buffer overflows on the heap, a necessary part of this is manipulating the heap layout in a way that creates an exploitable state, usually by placing a vulnerable object adjacent to a target object. This requires manual effort and extensive knowledge of the target. With a target as complex as the Linux kernel, this problem becomes highly non-trivial. At the current time, there has been little research in terms of employing algorithmic solutions for this. In this work, we present Kernel-SIEVE, a framework for evaluating heap layout manipulation algorithms that target the SLAB/SLUB allocator in the Linux kernel. Inspired by previous work that targets user-space allocators [34–36] it provides an interface for triggering allocations/deallocations in the kernel and contains a feedback loop that returns the resulting distance of two target objects. With this, we create the (to our knowledge) first performance benchmarks for heap layout manipulation algorithms in the Linux kernel. We present and evaluate two algorithms: A pseudo-random search, whose performance serves as a baseline, and KEvoHeap, a genetic algorithm based on Heelan’s EvoHeap [34,36]. We show that KEvoHeap is successful at creating the desired heap layout in all test cases and also surpasses the user-space performance benchmarks of EvoHeap. Finally, we discuss the challenges of applying these kinds of algorithms in real-world scenarios and weigh different possible approaches to tackle the problems that arise. Our research results are publicly available on GitHub [18].\",\"PeriodicalId\":36882,\"journal\":{\"name\":\"Journal of World-Systems Research\",\"volume\":\"172 1\",\"pages\":\"\"},\"PeriodicalIF\":1.0000,\"publicationDate\":\"2023-02-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Journal of World-Systems Research\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.5070/sr33160040\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q3\",\"JCRName\":\"SOCIOLOGY\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Journal of World-Systems Research","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.5070/sr33160040","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q3","JCRName":"SOCIOLOGY","Score":null,"Total":0}
引用次数: 0

摘要

为了评估安全漏洞的严重性,安全研究人员通常试图通过编写实际的漏洞来证明其可利用性。在堆上缓冲区溢出的情况下,其中一个必要部分是以一种创建可利用状态的方式操纵堆布局,通常是通过将易受攻击的对象放置在目标对象附近。这需要手工工作和对目标的广泛了解。对于像Linux内核这样复杂的目标,这个问题变得非常重要。目前,在使用算法解决这一问题方面的研究很少。在这项工作中,我们提出了kernel - sieve,这是一个框架,用于评估针对Linux内核中的SLAB/SLUB分配器的堆布局操作算法。受先前针对用户空间分配器的工作的启发[34-36],它提供了一个在内核中触发分配/释放的接口,并包含一个返回两个目标对象的最终距离的反馈循环。据此,我们创建了(据我们所知)Linux内核中堆布局操作算法的第一个性能基准。我们提出并评估了两种算法:伪随机搜索,其性能作为基准;KEvoHeap,一种基于Heelan的EvoHeap的遗传算法[34,36]。我们表明,在所有测试用例中,KEvoHeap都成功地创建了所需的堆布局,并且还超过了EvoHeap的用户空间性能基准。最后,我们讨论了在现实场景中应用这些算法所面临的挑战,并权衡了解决这些问题的不同可能方法。我们的研究成果在GitHub上是公开的[18]。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
[Solution] Algorithmic Heap Layout Manipulation in the Linux Kernel
To evaluate the severity of a security vulnerability a security researcher usually tries to prove its exploitability by writing an actual exploit. In the case of buffer overflows on the heap, a necessary part of this is manipulating the heap layout in a way that creates an exploitable state, usually by placing a vulnerable object adjacent to a target object. This requires manual effort and extensive knowledge of the target. With a target as complex as the Linux kernel, this problem becomes highly non-trivial. At the current time, there has been little research in terms of employing algorithmic solutions for this. In this work, we present Kernel-SIEVE, a framework for evaluating heap layout manipulation algorithms that target the SLAB/SLUB allocator in the Linux kernel. Inspired by previous work that targets user-space allocators [34–36] it provides an interface for triggering allocations/deallocations in the kernel and contains a feedback loop that returns the resulting distance of two target objects. With this, we create the (to our knowledge) first performance benchmarks for heap layout manipulation algorithms in the Linux kernel. We present and evaluate two algorithms: A pseudo-random search, whose performance serves as a baseline, and KEvoHeap, a genetic algorithm based on Heelan’s EvoHeap [34,36]. We show that KEvoHeap is successful at creating the desired heap layout in all test cases and also surpasses the user-space performance benchmarks of EvoHeap. Finally, we discuss the challenges of applying these kinds of algorithms in real-world scenarios and weigh different possible approaches to tackle the problems that arise. Our research results are publicly available on GitHub [18].
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
Journal of World-Systems Research
Journal of World-Systems Research Social Sciences-Political Science and International Relations
CiteScore
1.80
自引率
0.00%
发文量
24
审稿时长
30 weeks
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信