文章预览
一 环境搭建 commit:2c85ebc57b3e1817b6ce1a6b703928e113a90442 总的config: defconfig+menuconfig CONFIG_CONFIGFS_FS=y #支持img CONFIG_SECURITYFS=y #支持img CONFIG_DEBUG_INFO=y #调试 CONFIG_USER_NS=y #支持新的namespace CONFIG_USERFAULTFD=y #支持userfaultfd CONFIG_DMABUF=y #支持udmabuf (同样是修改了objtool的一个代码) 此外还需要在init脚本中给普通用户赋一个可以打开/dev/udmabuf文件的权限。 然后需要没有cg隔离,复现版本v5.10.0刚好不存在cg隔离;(笔者在复现时尽量认为是隔离的,不使用这一特性,本cve比较特殊,需要用到pipe) 二 漏洞分析 在分配dmabuf的时候,内核会调用 dma_buf_export函数,其中传入一个dma_buf_export_info结构体来传递相关参数信息,该结构体的定义如下: struct dma_buf_export_info { const char *exp_name; struct module *owner; const struct dma_buf_ops *ops; size_t size; int flags; struct dma_resv *r
………………………………