
如上图中memcpy处,ext的长度可以不是set->dlen的长度。

ext部分内存长度有tmpl中的dlen决定,tmpl由desc中的决定,desc在nft_data_init中初始化ctx中用户态可以控制的部分。当然这里的长度都是部分受限的,并不能随意设定。
而且最终的结果就是desc_len 可以不等于set->len造成溢出。
这个漏洞最大的启发其实是对内存的详细检测,有部分代码由于跨度很大,还是很容易造成溢出的。
本文探讨了在代码中使用memcpy时可能导致的内存安全问题。具体而言,当ext长度不由set->dlen决定,而是依赖于用户可控的ctx中的desc初始化时,可能产生desc_len不等于set->len的情况,从而引发溢出。博客强调了对内存操作进行详尽检查的重要性,尤其是在跨越多个函数或模块的代码中,因为这类情况更容易导致溢出漏洞。

如上图中memcpy处,ext的长度可以不是set->dlen的长度。

ext部分内存长度有tmpl中的dlen决定,tmpl由desc中的决定,desc在nft_data_init中初始化ctx中用户态可以控制的部分。当然这里的长度都是部分受限的,并不能随意设定。
而且最终的结果就是desc_len 可以不等于set->len造成溢出。
这个漏洞最大的启发其实是对内存的详细检测,有部分代码由于跨度很大,还是很容易造成溢出的。
1181
2849
1054

被折叠的 条评论
为什么被折叠?