# kAFL: Hardware-Assisted Feedback Fuzzing for OS Kernels

**URL:** <https://forum.90sec.com/t/topic/1229>\
**Category:** 学术研究\
**Created:** [2020 年7 月 30 日 05:35 UTC](https://forum.90sec.com/t/topic/1229 "2020-07-30T05:35:21Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

作者： ![maplgebra](https://forum.90sec.com/user_avatar/forum.90sec.com/maplgebra/32/1628_2.png) [@maplgebra](https://forum.90sec.com/u/maplgebra)\
发布日期： [2020 年7 月 30 日 05:35 UTC](https://forum.90sec.com/t/topic/1229/1 "2020-07-30T05:35:21Z")

</div>

# kAFL

## 0x00 贡献点：

- 系统无关
- 基于硬件的状态反馈
- 可扩展和模块化
- 开源

## 0x01 在未读文章之前心里的几个问题：

1. 怎么做到的系统无关？在给kvm和qemu都下patch的情况下？难道是linux kernel作为直接作为host VMM吗？再通过qemu进行系统无关的测试？

2. 什么是agent？

3. fuzzing kernel的时候输入是什么？

4. hypercall是怎么设计的？

5. fuzzer kernel 发生系统级别的crash怎么办？或者说怎么定义在kernel的crash（像二进制那样）

6. 整个系统虚拟化的构建是怎么样的？

7. 如何利用intel PT？

8. 关于qemu-pt相关patch的实践？

9. 最后也是构造了AFL里面的bitmap，那么如何通过intel PT的数据来构造的？

## 0x02 通过阅读得到的答案

1. Agent 是什么？

2. 整个系统虚拟化的构建情况

3. 如何利用intel PT？

4. 关于qemu-pt中相关patch的实践？

5. VM-exit 之后kvm和qemu的交互是怎么样的？

6. qemu是怎么把guest virtual address转化成在qemu可以写入（读）的地址？

7. 如何利用intel PT的数据来构造和AFL里面关联edge的bitmap？

8. The input and crash handler of fuzzing kernel

## 0x03 自身的感受

这次搬论文，我没有从论文的结构开始搬，我先大概看了一下，心里总结了一些问题。然后我在去深入的解决这些问题，学到了非常多的东西，受用无穷。这样的论文太少了，没有比较华丽浮躁的技术，但是完整的构建了整个对于kernel的fuzzing系统，并且主要是有源码，在读源码过程中，真的太爽了。kafl是第二个对我受用无穷的东西（第一个给了angr和hopper，哈哈哈），希望我浅薄的理解能带给大家帮助！

---

<div class="post-metadata">

作者： ![maplgebra](https://forum.90sec.com/user_avatar/forum.90sec.com/maplgebra/32/1628_2.png) [@maplgebra](https://forum.90sec.com/u/maplgebra)\
发布日期： [2020 年7 月 30 日 08:00 UTC](https://forum.90sec.com/t/topic/1229/2 "2020-07-30T08:00:00Z")

</div>

排版乱了，不想改了，用不了tab，心痛。

---

<div class="post-metadata">

作者： ![zjjchenyifu](https://forum.90sec.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zjjchenyifu](https://forum.90sec.com/u/zjjchenyifu)\
发布日期： [2020 年7 月 30 日 08:01 UTC](https://forum.90sec.com/t/topic/1229/3 "2020-07-30T08:01:02Z")

</div>

感谢文章，如果有完整体系的东西就很好了！(来自白嫖党的赞美)

---

<div class="post-metadata">

作者： ![maplgebra](https://forum.90sec.com/user_avatar/forum.90sec.com/maplgebra/32/1628_2.png) [@maplgebra](https://forum.90sec.com/u/maplgebra)\
发布日期： [2020 年7 月 30 日 08:03 UTC](https://forum.90sec.com/t/topic/1229/4 "2020-07-30T08:03:14Z")

</div>

完整体系是指什么呢？ kafl是开源的，它的升级版redqueen也是开源的。 想要深入了解，具体看代码即可，很好读的，我读的时候感觉很流畅。

---

<div class="post-metadata">

作者： ![zjjchenyifu](https://forum.90sec.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zjjchenyifu](https://forum.90sec.com/u/zjjchenyifu)\
发布日期： [2020 年7 月 30 日 14:04 UTC](https://forum.90sec.com/t/topic/1229/5 "2020-07-30T14:04:33Z")

</div>

就是整体的通读，对于菜鸟有些难度呢！

---

<div class="post-metadata">

作者： ![maplgebra](https://forum.90sec.com/user_avatar/forum.90sec.com/maplgebra/32/1628_2.png) [@maplgebra](https://forum.90sec.com/u/maplgebra)\
发布日期： [2020 年7 月 31 日 01:54 UTC](https://forum.90sec.com/t/topic/1229/6 "2020-07-31T01:54:20Z")

</div>

如果我告诉你我也是菜鸟你信吗？ 😂

---

<div class="post-metadata">

作者： ![1vanChen](https://forum.90sec.com/user_avatar/forum.90sec.com/1vanchen/32/3819_2.png) [@1vanChen](https://forum.90sec.com/u/1vanChen)\
发布日期： [2020 年7 月 31 日 15:24 UTC](https://forum.90sec.com/t/topic/1229/7 "2020-07-31T15:24:31Z")

</div>

maple师傅读论文的姿势学习了，回来再看自己的笔记感觉就像对论文的摘抄😂
