Microsoft Windows Kernel整数截断本地权限提升漏洞:触发原因-汇编形态

本文详细分析了Microsoft Windows Kernel中的整数截断本地权限提升漏洞,通过具体的代码示例和反汇编过程,揭示了该漏洞是如何利用整数截断特性导致内存越界写入的问题。

 

 

 

/* Return the functionality mask */ static inline u32 i2c_get_functionality(struct i2c_adapter *adap) { printk("i2c_get_functionality: enter--------------adap = %p\n", adap); printk("i2c_get_functionality: enter--------------adap->algo->functionality = %p\n", adap->algo->functionality); return adap->algo->functionality(adap); } 挂起栈: [ 13.204509] pc : i2c_dw_func+0x4/0x10 [ 13.208166] lr : i2c_check_functionality+0x5c/0x70 [ 13.212949] sp : ffff800010f7b8d0 [ 13.216255] x29: ffff800010f7b8d0 x28: ffff800010de8cc0 [ 13.221563] x27: ffff8000100bb020 x26: ffff80000887c790 [ 13.226871] x25: ffff800010de8000 x24: ffff000037898364 [ 13.232178] x23: ffff800010d13da0 x22: 0000000000000001 [ 13.237486] x21: ffff800010d13e00 x20: 0000000010000000 [ 13.242793] x19: ffff000037898000 x18: ffff800010c6df88 [ 13.248101] x17: 0000000000000000 x16: 0000000000000000 [ 13.253409] x15: ffff00000134d240 x14: 000000000000018c [ 13.258716] x13: ffff00000134d240 x12: 00000000ffffffea [ 13.264024] x11: ffff800010cddf98 x10: ffff800010cc5f58 [ 13.269331] x9 : ffff800010cc5fb0 x8 : 0000000000017fe8 [ 13.274638] x7 : c0000000ffffefff x6 : 0000000000000001 [ 13.279946] x5 : ffff00003fdc0808 x4 : 0000000000000000 [ 13.285253] x3 : 0000000000000027 x2 : ae2d0d1b69cbfa00 [ 13.290560] x1 : ffff8000105c6918 x0 : 0000000000000000 [ 13.295868] Call trace: [ 13.298311] i2c_dw_func+0x4/0x10 [ 13.301620] i2c_register_adapter+0x16c/0x698 [ 13.305969] __i2c_add_numbered_adapter+0x88/0xa0 [ 13.310666] i2c_add_numbered_adapter+0x3c/0x48 [ 13.315216] i2c_pca954x_register+0x150/0x1f8 [nf_bsp] [ 13.320365] bsp_init+0x78/0x1cc [nf_bsp] [ 13.324370] do_one_initcall+0x50/0x1b0 [ 13.328201] do_init_module+0x50/0x1f0 [ 13.331943] load_module+0x202c/0x2670 [ 13.335685] __do_sys_init_module+0x13c/0x1f0 [ 13.340035] __arm64_sys_init_module+0x18/0x20 [ 13.344474] el0_svc_common.constprop.0+0x7c/0x210 [ 13.349258] do_el0_svc+0x18/0x20 [ 13.352568] el0_svc+0x18/0x48 [ 13.355616] el0_sync_handler+0xa8/0xb0 [ 13.359445] el0_sync+0x15c/0x180 [ 13.362759] Code: 17fffff6 9408e974 d503201f f9407400 (b944c000) 函数中我加了打印 static inline int i2c_check_functionality(struct i2c_adapter *adap, u32 func) { printk("i2c_check_functionality: enter--------------adap = %p, func = %d\n", adap, func); return (func & i2c_get_functionality(adap)) == func; } 然后dmesg中打印的是: [ 13.170578] i2c_check_functionality: enter--------------adap = 00000000c4cd0229, func = 268435456 [ 13.170581] i2c_get_functionality: enter--------------adap = 00000000c4cd0229 [ 13.170585] i2c_get_functionality: enter--------------adap->algo->functionality = 00000000f69fc895 [ 13.170599] Unable to handle kernel NULL pointer dereference at virtual address 00000000000004c0 看着指针都是有地址的啊,为什么还是会显示空指针?
06-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值