【论文笔记】KShot: Live Kernel Patching with SMM and SGX

2020-0706-KShot

2020%200706%20KShot%20e96e0a65346140bca7c038578dbc250f/Untitled.png

link: https://web.eecs.umich.edu/~weimerw/p/weimer-dsn2020-kshot.pdf

会议:DSN 2020

运行时内核漏洞修补技术(Live kernel patching)能够在不重启系统的条件下修复漏洞,从而减少系统不可用时间。但目前的运行时内核漏洞修补技术受限于:(1)依赖特定操作系统的支持,没有一种支持不同类型操作系统的解决方案;(2)内核的完整性,若内核已经被攻击者攻陷,运行时内核漏洞修补很可能会失败。

作者针对以上问题,提出了一种利用x86 SMM(System Management Mode)和Intel SGX进行运行时内核漏洞修复技术,KShot。下图为KShot的工作流程:

2020%200706%20KShot%20e96e0a65346140bca7c038578dbc250f/Untitled%201.png

  1. 从服务器获取Patch
  2. 校验、解析Patch,为SMM Handler准备Patch(Fig. 3)
  3. 通过System Management Interrupt (SMI)将控制权交给SMM Handler,并保存上下文
  4. SMM Handler利用trampolines的方式(Fig. 1中instruction-level)进行patch
  5. 恢复上下文,将控制权交还给内核

2020%200706%20KShot%20e96e0a65346140bca7c038578dbc250f/Untitled%202.png

2020%200706%20KShot%20e96e0a65346140bca7c038578dbc250f/Untitled%203.png

作者在Linux kernel 3.14、4.4中挑选了214格漏洞,并随机选取其中的30个进行实验,以验证KShot修复漏洞的能力,作者通过手动验证,发现这30个漏洞均成功修复。

2020%200706%20KShot%20e96e0a65346140bca7c038578dbc250f/Untitled%204.png

KShot在SGX准备阶段的开销:

2020%200706%20KShot%20e96e0a65346140bca7c038578dbc250f/Untitled%205.png

KShot在SMM中patch的开销:

2020%200706%20KShot%20e96e0a65346140bca7c038578dbc250f/Untitled%206.png