该文章分析了CVE-2023-4004漏洞的成因,该漏洞是由于在nftables的nft_pipapo_remove函数中,当移除一个pipapo set中的元素时,没有正确处理NFT_SET_EXT_KEY_END的缺失,导致可以多次释放同一元素。
nft_pipapo_remove
NFT_SET_EXT_KEY_END
本文分析了一种利用Linux内核中的漏洞,通过“缓存转移”技术,将利用原语从固定大小的缓存转移到动态缓存,绕过CONFIG_KMALLOC_SPLIT_VARSIZE的保护。首先利用CVE-2023-0461漏洞在一个固定缓存中导致UAF,然后利用此UAF在动态缓存中覆盖关键数据结构,从而绕过KASLR并最终实现RIP控制。文章还讨论了在利用过程中遇到的问题以及如何通过设置内核变量来规避。