![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
内核漏洞
文章平均质量分 95
bsauce
github:https://github.com/bsauce
展开
-
【kernel exploit】CVE-2022-25636 nftables OOB 写堆指针漏洞利用
`nf_table` 模块的 `net/netfilter/nf_dup_netdev.c`中的 [nft_fwd_dup_netdev_offload()](https://elixir.bootlin.com/linux/v5.16.11/source/net/netfilter/nf_dup_netdev.c#L67) 函数由于计算分配空间与实际初始化时判断条件不一致,存在**OOB write**(系统必须支持包处理卸载-Network Interface Cards (NICs),但是现实中很少见原创 2022-12-13 21:53:07 · 941 阅读 · 0 评论 -
【kernel exploit】CVE-2022-2639 openvswitch模块kmalloc-0x10000堆溢出利用(pipe_buffer任意文件写技术)
`openvswitch` 内核模块中,reserve_sfa_size() 函数存在整数溢出导致 **kmalloc-0x10000 堆溢出写**,需要利用页喷射构造 cross-cache 溢出。本文基于 `pipe-primitive` 来篡改任意文件,所以不需要绕过 KASLR/SMEP/SMAP/KPTI 保护机制,跨版本不需要适配就能完成利用。**先创建pipe并splice到只读文件`/usr/bin/mount`,堆喷伪造 `pipe_buffer->flags = PIPE_BUF_FLA原创 2022-11-24 11:57:04 · 1496 阅读 · 1 评论 -
【Exploit trick】利用poll_list对象构造kmalloc-32任意释放 (corCTF 2022-CoRJail)
CoRJail介绍:内核利用+docker逃逸,漏洞是 off-by-one,docker容器含有定制的seccomp过滤。本方法是利用poll_list对象来构造任意释放。环境限制:CoRJail 运行在 custom Debian Bullseye image (简称CoROS)上的 docker 容器中,作者修改了来阻止msgget()/msgsnd()/msgrcv()调用,但是允许调用add_key()/keyctl(),容器中可以访问,作者定制的 seccomp 文件位于here。需自行编译。原创 2022-11-11 13:53:33 · 1098 阅读 · 0 评论 -
【kernel exploit】CVE-2022-32250 nftables错误链表操作导致UAF写的漏洞利用
`nftables` 模块的 `net/netfilter/nf_tables_api.c` 采用 `NFT_MSG_NEWSET` 功能来添加 `nft_set` 时,处理 `lookup` 和 `dynset` expression 时,由于错误的 `NFT_EXPR_STATEFUL` 检查,`nft_expr` 对象释放后仍位于`nft_set->binding` 链表中,新加入 `nft_expr` 时导致**UAF写**(触发漏洞需要 `CAP_NET_ADMIN` 权限)。UAF写会往 `km原创 2022-11-03 21:44:15 · 1556 阅读 · 0 评论 -
【kernel exploit】CVE-2022-2588 Double-free 漏洞 DirtyCred 利用
由于将 `route4_filter` 对象从链表中删除和释放时的检查条件不一致,导致该对象被释放后仍存于链表中,后面可以触发 **Double-Free**。需要 `User Namespaces` 才能触发。采用 DirtCred 方法进行提权。原创 2022-10-21 16:33:39 · 1292 阅读 · 0 评论 -
【kernel exploit】CVE-2021-4154 错误释放任意file对象-DirtyCred利用
CVE-2021-4154 DirtyCred 利用方法原创 2022-10-17 12:14:56 · 894 阅读 · 0 评论 -
【kernel exploit】CVE-2022-34918 nftables 堆溢出漏洞利用(list_head任意写)
CVE-2022-34918 nftable堆溢出漏洞利用(list_head任意写)原创 2022-07-26 20:24:17 · 2126 阅读 · 0 评论 -
【kernel exploit】CVE-2022-1015 nftables 栈溢出漏洞分析与利用
CVE-2022-1015 内核nftables 栈溢出原创 2022-07-16 19:47:20 · 2731 阅读 · 0 评论 -
syzlang语法编写案例学习 —— Looking for Remote Code Execution bugs in the Linux kernel
syzlang 模板编写原创 2022-07-11 08:22:10 · 1530 阅读 · 2 评论 -
【kernel exploit】CVE-2021-41073 内核类型混淆漏洞利用分析
CVE-2021-41073原创 2022-07-10 09:19:33 · 1172 阅读 · 0 评论 -
syzkaller 源码阅读笔记1(syz-extract & syz-sysgen)
功能总结:编译系统调用模板的原理,可以理解成syzkaller实现了一种描述系统调用的小型的编程语言。syz-extract :根据 syzlang 文件从内核源文件中提取出使用的对应的宏、系统调用号等的值,生成 .const 文件(例如,xxx.txt.const)。syz-sysgen :通过 syzlang 文件与 .const 文件进行语法分析与语义分析,生成抽象语法树,最终生成供 syzkaller 使用的 golang 代码,分为如下四个步骤:assignSyscallNumbers:原创 2022-05-15 22:11:09 · 1633 阅读 · 0 评论 -
syzkaller 源码阅读笔记2(syz-manager)
1. 介绍syz-manager 功能:主要负责各种工作的启动(HTTP、RPC、dashboard等等)、调用fuzz以及repro的生成。fuzz命令:$ ./syz-manager -config=my.cfg示例qemu.cfg:syzkaller\pkg\mgrconfig\testdata 目录下{ "target": "linux/amd64", "http": "myhost.com:56741", // 显示正在运行的 syz-manager 进程信息的URL "原创 2022-05-15 20:48:08 · 1305 阅读 · 0 评论 -
syzkaller 源码阅读笔记3(syz-fuzzer)
syz-fuzzer 功能:进行 fuzzing 的主程序,根据文件系统/sys/kernel/debug/kcov获取内核代码覆盖率,并且生成新的变异数据,然后将输入传给 syz-executor。代码总结:见 main() 函数。1. main()位置:syz-fuzzer/fuzzer.go: main()说明:[1] —— RPC远程调用 -> syz-manager/rpc.go:Check() -> machineChecked() -> loadCorpus()原创 2022-05-15 20:47:30 · 1989 阅读 · 1 评论 -
【bsauce读论文】Vetting Imbalance Reference Counting in Linux kernel with Symbolic Execution
1.简介目标:挖掘错误使用引用计数(reference counter)的漏洞。挑战:可扩展性;独特的内核约定(不统一的引用计数管理,eg,external vs. internal reference counter)需要进行 path-sensitive analysis,检查可行的路径上,refcount递增递减是否匹配reference的增加与移除;Linux内核中使用refcount时有特殊的约定,有些是良性的,并不会违反refcount的一致性原则,可能会导致误报,例如 interna原创 2022-05-04 22:37:02 · 1315 阅读 · 0 评论 -
【bsauce读论文】 Playing for K(H)eaps: Understanding and Improving Linux Kernel Exploit Reliability
1. 简介主要内容:分析现有的 exploitation stabilization 技术,回答以下问题:(1)野外最常用的利用稳定技术是什么?(2)漏洞专家对这些技术的观点是什么,是否正确?(3)利用稳定技术有效或无效的原因是什么?(4)如何提升内核利用的可靠性? 作者最后提出了名为 Context Conservation 的新技术,来提升UAF/DF 漏洞利用的稳定性,实验结果表明,稳定性平均提升了14.87%;如果和现有的利用稳定技术相结合,稳定性平均提升 125.53%。实验过程:采访了11原创 2022-05-03 12:51:11 · 1852 阅读 · 0 评论 -
CVE-2022-0185 价值$3w的 File System Context 内核整数溢出漏洞利用分析
本漏洞作者在kctf环境上成功完成了提权和逃逸,并获得了 google kCTF vulnerability reward program 项目奖励的 31,337 美金的奖励(该项目对能从有nsjail 沙箱的Linux内核提权,奖励31,337 到 91,337 美元,由于syzbot平台上有人比作者早6天先发现了这个漏洞,作者并非首次发现该漏洞,只是完成了kctf提权,便获得了最低奖金)。影响版本:Linux-v5.1~v5.16.2。5.1-rc1 引入漏洞,Linux-v5.16.2已修补 ,由原创 2022-04-11 21:45:26 · 1650 阅读 · 1 评论 -
Linux内核中利用msg_msg结构实现任意地址读写
文章首发于安全客:Linux内核中利用msg_msg结构实现任意地址读写题目及exp下载 —— https://github.com/bsauce/CTF/tree/master/corCTF 2021介绍:本文示例是来自corCTF 2021中 的两个内核题,由 BitsByWill 和 D3v17 所出。针对UAF漏洞,漏洞对象从kmalloc-64到kmalloc-4096,都能利用 msg_msg 结构实现任意写。本驱动是基于NetFilter所写,有两个模式,简单模式(对应题目Fire_of_原创 2021-10-18 09:50:54 · 1796 阅读 · 1 评论 -
【Exploit trick】利用CVE-2021-26708 绕过LKRG缓解机制
LKRG source code绕过LKRG总结:构造ROP链给两个函数打patch,p_check_integrity()(负责检查内核完整性)和p_cmp_creds()(负责检查进程凭证)。补丁程序为0x48 0x31 0xc0 0xc3,也就是xor rax, rax ; ret或return 0,打完补丁后提权即可。打补丁函数采用void *text_poke(void *addr, const void *opcode, size_t len),kprobes中也用到了该函数。1. 回顾CV原创 2021-10-18 09:21:43 · 674 阅读 · 0 评论 -
【kernel exploit】CVE-2016-9793 错误处理负值导致访问用户空间
影响版本:Linux v4.8.14 以前。v4.8.14已修补,v4.8.13未修补。 7.8分。测试版本:Linux-4.8.13 exploit及测试环境下载地址—https://github.com/bsauce/kernel-exploit-factory编译选项: CONFIG_SLAB=yGeneral setup —> Choose SLAB allocator (SLUB (Unqueued Allocator)) —> SLAB在编译时将.config中的C原创 2021-09-07 18:12:03 · 745 阅读 · 0 评论 -
【kernel exploit】CVE-2018-5333 空指针引用漏洞
影响版本:Linux 4.14.14以前。 5.5分。4.14.13未修补,4.14.14已修补。测试版本:Linux-4.14.13 exploit及测试环境下载地址—https://github.com/bsauce/kernel-exploit-factory编译选项:CONFIG_RDS=y CONFIG_DEBUG_INFO=y CONFIG_SLAB=yGeneral setup —> Choose SLAB allocator (SLUB (Unqueued Allo原创 2021-07-27 20:48:36 · 1332 阅读 · 0 评论 -
【kernel exploit】CVE-2018-18955 用户命名空间逻辑错误
影响版本:Linux 4.15.x~4.19.2 4.19.2已修补,4.19.1未修补。 7.0分。测试版本:Linux-4.19.1 exploit及测试环境下载地址—https://github.com/bsauce/kernel-exploit-factory编译选项:CONFIG_USER_NS CONFIG_SLAB=yGeneral setup —> Choose SLAB allocator (SLUB (Unqueued Allocator)) —> SL原创 2021-07-09 13:19:44 · 983 阅读 · 0 评论 -
【kernel exploit】CVE-2019-8956 sctp_sendmsg()空指针引用漏洞
【kernel exploit】CVE-2019-8956 sctp_sendmsg()空指针引用漏洞影响版本:Linux-4.20.8以前(v4.20.8已修补) 4.19.21以前 7.8分。测试版本:Linux-4.20.7 exploit及测试环境下载地址—https://github.com/bsauce/kernel-exploit-factory编译选项: CONFIG_IP_SCTP=y CONFIG_SLAB=yGeneral setup —> Choose SLA原创 2021-07-07 21:28:50 · 1244 阅读 · 1 评论 -
【kernel exploit】CVE-2019-9213 逻辑漏洞绕过 mmap_min_addr 限制
影响版本:Linux-4.20.14以前(v4.20.14已修补) 5.5分。测试版本:Linux-4.20.7 exploit及测试环境下载地址—https://github.com/bsauce/kernel-exploit-factory编译选项: CONFIG_SLAB=yGeneral setup —> Choose SLAB allocator (SLUB (Unqueued Allocator)) —> SLAB在编译时将.config中的CONFIG_E1000和原创 2021-07-07 21:26:45 · 1297 阅读 · 0 评论 -
kernel exploit 有用的结构体
一、可用于 Leak/AAR/AAW/RIP劫持的结构体说明目前缺少kmalloc-8、kmalloc-16、kmalloc-64、kmalloc-512结构体。1. shm_file_datasize: 0x20 kmalloc-32内核基址:可泄露。其ns、vm_ops指针可以泄露heap:可泄露。file指向堆区域stack:不能泄露劫持RIP:不能产生:调用shmat()映射共享内存释放:shmctl() ??备注:尝试过重写vm_ops,但是没发现调用fake_vtable函.原创 2021-06-22 18:17:42 · 2780 阅读 · 0 评论 -
【kernel exploit】CVE-2017-1000112 UDP报文处理不一致导致堆溢出
影响版本:<=Linux 4.12.6 v4.12.7已修补。 7.0分。由syzkaller发现。测试版本:Linux-4.12.6 exploit及测试环境下载地址—https://github.com/bsauce/kernel-exploit-factory编译选项: CONFIG_SLAB=yGeneral setup —> Choose SLAB allocator (SLUB (Unqueued Allocator)) —> SLAB在编译时将.co原创 2021-06-18 17:22:34 · 914 阅读 · 1 评论 -
【kernel exploit】BPF漏洞挖掘与CVE-2020-27194 整数溢出漏洞
影响版本:5.8.x 内核分支,v5.8.15 以及更低的版本。该分支的发行版:Fedora 33 、Ubuntu 20.10。编译选项:CONFIG_BPF_SYSCALL。漏洞描述:eBPF验证程序中进行or操作时,scalar32_min_max_or()函数将64位的值赋值到32位的变量上,导致整数截断,进而错误计算了寄存器的范围,从而绕过bpf的检查,导致越界读写。补丁:patch scalar32_min_max_or()函数中对32位和64位的情况分开处理,防止整数截断。测试版本:Li原创 2021-06-11 12:33:59 · 706 阅读 · 1 评论 -
【kernel exploit】CVE-2017-8890 Phoenix Talon漏洞分析与利用
影响版本:Linux 2.5.69~4.10.15 详细影响版本 评分7.8,可能导致远程代码执行。隐藏11年,通过syzkaller挖到。测试版本:Linux-4.10.15 测试环境下载地址 — https://github.com/bsauce/kernel_exploit_factory编译选项:CONFIG_E1000=y和CONFIG_E1000E=yGeneral setup —> Choose SLAB allocator (SLUB (Unqueued Allocator))原创 2021-06-11 12:30:35 · 657 阅读 · 1 评论 -
【kernel exploit】CVE-2020-8835:eBPF verifier 整数截断导致越界读写
影响版本:v5.4.7 - v5.5.0 以及更新的版本,如5.6。编译选项:CONFIG_BPF_SYSCALL,config所有带BPF字样的。漏洞描述:在Linux Kernel commit(581738a681b6)中引入,验证BPF_JMP32指令时,kernel/bpf/verifier.c 没有正确将64位值转换为32位(直接取低32位),错误计算了bpf_reg_state寄存器状态中的寄存器值范围,使得BPF代码验证阶段和实际执行阶段不一致,导致越界读写。补丁:patch 去掉 _原创 2021-06-09 11:37:59 · 1736 阅读 · 3 评论 -
【kernel exploit】CVE-2017-10661 链表漏洞与TOCTTOU——任意地址写
【kernel exploit】CVE-2017-10661 链表漏洞与TOCTTOU——任意地址写影响版本:Linux 2.6.27~4.10.14 4.10.15已修补,通过syzkaller发现。 7.0分测试版本:Linux-4.10.14 测试环境下载地址编译选项: CONFIG_SLAB=yGeneral setup —> Choose SLAB allocator (SLUB (Unqueued Allocator)) —> SLAB$ wget https:/原创 2021-04-01 17:59:00 · 978 阅读 · 0 评论 -
【内核漏洞利用】绕过CONFIG_SLAB_FREELIST_HARDENED防护—kernoob两种解法
环境下载:download题目来源:XCTF高校战"疫"分享赛1.漏洞分析功能分析:// 共 4 个功能:add_note、del_note、show_note、edit_note,用户输入 user_input 格式——(index+user_addr+size),全局数组pool处存放(note+size)。、// 1.add_note cmd=0x30000signed __int64 __usercall add_note@<rax>(__int64 a1@<rbp&原创 2020-12-28 11:33:20 · 1427 阅读 · 0 评论 -
Linux 安全缓解机制总结
学习资料:linux-kernel-defence-mapA Decade of Linux Kernel Vulnerabilities, their Mitigation and Open Problems-2017The State of Kernel Self Protection-2018PaX/Grsecurity 代码分析——各种安全机制Linux每个版本对应的安全更新linux安全机制的论文防护研究团队:SELinux (NSA)、AppArmor原创 2020-06-28 11:30:17 · 6043 阅读 · 3 评论 -
内核堆加固机制的脆弱性分析
来自于原文"Weaknesses in Linux Kernel Heap Hardening"。总结:free_list poisoning是堆漏洞利用的常用方法,原理是将fd指针改成指向目标地址,这样下一次分配就会将分配到我们的目标地址。然而linux内核引入了堆加固机制,会将fd指针异或加密,导致利用受阻。本文分析一下这种加固机制的脆弱性,在特定情况下,攻击者还是能够利用free_list...原创 2020-03-27 22:04:02 · 413 阅读 · 0 评论 -
linux内核漏洞利用初探(3):demo-stack_overflow
2. Kernel Stack Overflow(1)漏洞代码#include <linux/init.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/proc_fs.h>int bug2_write(struct file *file,const c...原创 2019-09-05 11:13:35 · 783 阅读 · 0 评论 -
linux内核提权系列教程(1):堆喷射函数sendmsg与msgsend利用
说明:实验所需的驱动源码、bzImage、cpio文件见我的github进行下载。本教程适合对漏洞提权有一定了解的同学阅读,具体可以看看我先知之前的文章,或者我的简书。一、 堆喷函数介绍在linux内核下进行堆喷射时,首先需要注意喷射的堆块的大小,因为只有大小相近的堆块才保存在相同的cache中。具体的cache块分布如下图:[外链图片转存失败(img-k7PSpZWM-1567945913...原创 2019-09-08 20:38:47 · 1022 阅读 · 0 评论 -
linux内核提权系列教程(3):栈变量未初始化漏洞
说明:实验所需的驱动源码、bzImage、cpio文件见我的github进行下载。本教程适合对漏洞提权有一定了解的同学阅读,具体可以看看我先知之前的文章,或者我的简书。一、 漏洞分析1. 程序分析总共两个驱动号,对应两个功能。 case UNINITIALISED_STACK_ALLOC: { ret = copy_to_stack((char *)p_arg); bre...原创 2019-09-09 15:07:43 · 154 阅读 · 0 评论 -
【内核漏洞利用】WCTF 2018 klist—竞争UAF-pipe堆喷
WCTF 2018 klist—竞争UAF-pipe堆喷本题对了解和利用内核竞争漏洞很有帮助。一、题目分析题目模仿磁盘文件机制,可以自由申请、释放、读写堆块。提供read、write、ioctl三个功能。堆块结构如下。flag—标志位,使用原子操作对其加减,操作前加1,操作后减1,当该位为0时,调用kfree释放;size—content大小;next指向下一个item。 --...原创 2019-09-11 10:28:17 · 1052 阅读 · 0 评论 -
【内核漏洞利用】TokyoWesternsCTF-2019-gnote Double-Fetch
一、CVE-2015-8550漏洞详情可以参见https://wpengfei.github.io/cpedoc-accepted.pdf。[外链图片转存失败(img-tzpkzvE3-1568621850784)(/Users/john/Desktop/tmp/2019ctf/TokyoWesternsCTF/gnote/writeup/CVE-2015-8550.png)]gcc 编译s...原创 2019-09-16 16:19:11 · 1720 阅读 · 0 评论 -
linux内核漏洞利用初探(1):环境配置
主要记录一下学习muhe师傅的系列教程,记录其中的坑点。环境说明:内核版本2.6.32.1busybox版本1.19.4gcc版本4.7实验环境ubuntu16.041.更新gcc内核2.6.x只支持gcc 3.x和4.x.y,可能是较高版本的gcc不支持老版本kernel的某些语法格式。gcc下降:sudo apt-get install -y gcc-4.7sudo apt...原创 2019-09-05 11:13:10 · 1901 阅读 · 0 评论