环境搭建
内核版本:
commit:
8357f6fb3d9a02ac55f0d758b9c79b4647c18bcb
config:
保证能用fsopen打开9p需要如下配置:
CONFIG_9P_FS=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" |