Nftables漏洞原理分析(CVE-2022-32250)

💡 原文中文,约9300字,阅读约需23分钟。
📝

内容提要

nftables中的CVE-2022-32250漏洞是由于处理集合时存在uaf漏洞。攻击者可以通过创建特定的set和lookup表达式来触发漏洞。

🎯

关键要点

  • nftables中的CVE-2022-32250漏洞是由于处理集合时存在uaf漏洞。
  • 攻击者可以通过创建特定的set和lookup表达式来触发漏洞。
  • 集合用于存储唯一值,并提供高效的元素存在性检查机制。
  • 漏洞验证需要在特定环境下搭建,包括ubuntu20和相关配置。
  • KASAN检测出uaf漏洞,漏洞与set的创建和使用有关。
  • 在创建集合时需要校验集合名、表、键值长度和ID等条件。
  • 集合通过kvzalloc函数开辟空间,并进行初始化。
  • 表达式的创建和初始化过程可能导致漏洞,因为表达式的标志位未被正确校验。
  • lookup表达式的结构体包含binding变量,负责维护双链表。
  • 在lookup表达式初始化时需要set和源寄存器的存在。
  • 绑定操作将表达式的binding接入set的binding,维护相同set下的不同表达式。
  • 若lookup表达式已绑定在set上,销毁操作可能不会执行,导致表达式残留。
  • POC分析展示了如何创建set和lookup表达式以触发漏洞。
  • 通过创建多个set并链接已释放的lookup表达式,最终导致uaf漏洞的发生。

延伸问答

CVE-2022-32250漏洞的根本原因是什么?

该漏洞是由于nftables在处理集合时存在的使用后释放(uaf)漏洞。

攻击者如何利用CVE-2022-32250漏洞?

攻击者可以通过创建特定的集合和查找表达式来触发该漏洞。

在验证CVE-2022-32250漏洞时需要哪些环境配置?

需要在ubuntu20环境下搭建,包括特定的QEMU和Linux内核配置。

CVE-2022-32250漏洞的影响是什么?

该漏洞可能导致攻击者在系统中执行任意代码,影响系统安全性。

如何创建集合以触发CVE-2022-32250漏洞?

可以通过创建多个集合并链接已释放的查找表达式来触发漏洞。

CVE-2022-32250漏洞的检测是如何进行的?

使用KASAN工具可以检测到该漏洞的存在,特别是在处理集合时。

➡️

继续阅读