专栏名称: 星盟安全
星盟安全工作室---“VENI VIDI VICI”(我来,我见,我征服),我们的征途是星辰大海。从事各类安全研究,专注于知识分享。
目录
今天看啥  ›  专栏  ›  星盟安全

CVE-2023-35001 - nf_tables - LPE - Pwn2Own Vancouver 2023

星盟安全  · 公众号  ·  · 2024-05-19 20:09
    

文章预览

简介 阅读本篇文章前,读者需要了解nf_tables中的虚拟机构成和执行过程。 漏洞存在于nf_tables模块的byteorder表达式执行过程,可导致栈溢出。 内核版本5.19.10、编译选项选中nf_tables相关选项。不要开启KASAN,会影响栈的布局。 内核启动后先insmod安装libcrc32c.ko再安装nf_tables.ko。 漏洞分析 下面是 nft_byteorder_eval 代码。这个函数实现了端序的转换。 首先可以看到s和d指针指向一个union,这个union的实际大小由u32而非u16决定。 void nft_byteorder_eval ( const struct nft_expr *expr,      struct nft_regs *regs,       const struct nft_pktinfo *pkt) {   const struct nft_byteorder * priv = nft_expr_priv(expr);  u32 *src = >data[priv->sreg];  u32 *dst = >data[priv->dreg];   union { u32 u32; u16 u16; } *s, *d;   unsigned int i; 在下面case2的情况中,代码会迭代访问s,长度由 priv->len / 2 决定。 假如传入了8个字 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览