CVE-2022-0185[half]


环境搭建

内核版本:

commit:

8357f6fb3d9a02ac55f0d758b9c79b4647c18bcb

config:

保证能用fsopen打开9p需要如下配置:

CONFIG_9P_FS=y
CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y

漏洞成因

param.string

漏洞出在fsconfig系统调用的FSCONFIG_SET_STRING这个cmd上:https://elixir.bootlin.com/linux/v5.16/source/fs/fsopen.c#L395

漏洞点分析

具体的漏洞函数在legacy_parse_param:https://elixir.bootlin.com/linux/v5.16/source/fs/fs_context.c#L525

具体函数调用链如下:

SYS_fsconfig

​ cmd

​ vfs_fsconfig_locked

​ vfs_parse_fs_param

​ fc->ops->parse_param == legacy_parse_param

具体看这个漏洞函数:

漏洞目标是ctx->legacy_data会由于长度错误而溢出;memcpy

LEAK

好巧妙的布局:

attack

应该就是篡改msg_msg的指针借助条件竞争搞任意地址写了;

动态调试

sudo gdb  -ex "target remote localhost:1234" -ex "source ../gdb/dump.py" -ex "file ./vmlinux" -ex "c"

文章作者: q1ming
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1ming !
  目录