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漏洞的发生。
➡️

继续阅读