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