深入解析:LKRG 0.9.0 发布与Linux内核漏洞挖掘

本文详细介绍了在LKRG 0.9.0版本开发与测试过程中发现的多个Linux内核严重漏洞,包括CVE-2021-3411、CVE-2020-27825等,涉及内核的KRETPROBES、ftrace、cgroup BPF组件及信号处理机制中的Use-After-Free和竞态条件问题。

LKRG 0.9.0 已经发布!

在LKRG的开发和测试过程中,我发现了7个Linux内核漏洞,其中4个已分配了CVE编号(不过,有1个CVE编号覆盖了2个漏洞):

  • CVE-2021-3411 - Linux内核:损坏的KRETPROBES和优化器
  • CVE-2020-27825 - Linux内核:由于竞态条件,ftrace环形缓冲区调整大小逻辑中的Use-After-Free漏洞
  • CVE-2020-25220 - Linux内核:针对CVE-2020-14356的补丁(向后移植)中的Use-After-Free漏洞(受影响内核:4.9.233之前的4.9.x系列,4.14.194之前的4.14.x系列,以及4.19.140之前的4.19.x系列)
  • CVE-2020-14356 - Linux内核:cgroup BPF组件中的Use-After-Free漏洞(受影响内核:自4.5+至5.7.10)

我还发现了与ftrace UAF漏洞(CVE-2020-27825)相关的另外两个问题:

  1. 一个死锁问题,并未真正得到解决,开发人员表示会关注,但后续更新不多。
  2. hwlatd内核线程相关的代码存在问题——它与该线程的启动器/终止器的同步不正确。这可能导致内核中持续出现WARN警告。

CVE-2021-3411涉及两种不同类型的漏洞:

  1. 损坏的KRETPROBE(最近报告)
  2. KPROBE优化器与链接器最新更改的不兼容性。

此外,我还发现了一个关于濒死进程中内核信号处理的漏洞:

  • CVE-2020-12826 – Linux内核5.6.5之前版本对退出信号的限制不足。

不过,我不确定这个漏洞是否是在LKRG相关工作期间发现的,因此不计入此处(否则总数将是8个漏洞,其中5个有CVE编号)。

这个统计结果相当糟糕……然而,这或许可以作为LKRG新版本发布时的一个有趣故事。也可能成为会议演讲的一个有趣话题。

完整的发布公告可以在此阅读:https://www.openwall.com/lists/announce/2021/04/12/1

此致, Adam

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计