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