纪检监察网站建设的意义,安卓app在线开发,厦门360搜索推广,手机h5制作目录 1.介绍#xff1a;
2.实验#xff1a;
3.总结#xff1a; 1.介绍#xff1a;
1.1#xff1a;eBPF简介#xff1a;eBPF(extendedBerkeleyPacketFilter)是内核源自于BPF的一套包过滤机制#xff0c;BPF可以理解成用户与内核之间的一条通道#xff0c;有非常强大的…目录 1.介绍
2.实验
3.总结 1.介绍
1.1eBPF简介eBPF(extendedBerkeleyPacketFilter)是内核源自于BPF的一套包过滤机制BPF可以理解成用户与内核之间的一条通道有非常强大的功能。一个典型的BPF程序流程为用户程序调用syscall(__NR_bpfBPF_MAP_CREATEattrsizeof(attr))申请创建一个map在attr结构体中指定map的类型、大小、最大容量等属性。用户程序调用syscall(__NR_bpfBPF_PROG_LOADattrsizeof(attr))来将我们写的BPF代码加载进内核attr结构体中包含了指令数量、指令首地址指针、日志级别等属性。在加载之前会利用虚拟执行的方式来做安全性校验这个校验包括对指定语法的检查、指令数量的检查、指令中的指针和立即数的范围及读写权限检查禁止将内核中的地址暴露给用户空间禁止对BPF程序stack之外的内核地址读写。安全校验通过后程序被成功加载至内核后续真正执行时不再重复做检查。用户程序通过调用setsockopt(sockets[1]SOL_SOCKETSO_ATTACH_BPFprogfdsizeof(progfd)将我们写的BPF程序绑定到指定的socket上。Progfd为上一步骤的返回值。用户程序通过操作上一步骤中的socket来触发BPF真正执行。eBPF虚拟指令系统属于RISC拥有10个虚拟寄存器r0-r10在实际运行时虚拟机会把这10个寄存器一一对应于硬件CPU的10个物理寄存器。用户可以用eBPF指令字节码的形式向内核输送代码并通过事件来触发内核执行用户提供的代码同时以mapkeyvalue的形式来和内核共享数据用户层向map中写数据内核层从map中取数据反之亦然。eBPF可用于内核的跟踪和调试网络事件的过滤和安全性。一般机制是用户空间将一个特殊的汇编字节码加载到内核中并附带说明附加程序的位置内核运行一个“验证器”来确保程序是安全的内核将字节码转换为本地代码并将其附加到请求的位置。 1.2当然使普通用户能向内核提交可控的指令代码去执行会带来一些严重的安全问题
1.3CVE-2017-16995这个漏洞存在于Linux内核的eBPF模块是由于eBPF验证模块的计算错误产生的一个内存任意读写漏洞。用户和攻击者可以使用这个漏洞以达到提权的目的。提权原理攻击者首先在进程用户空间植入提权代码并且正常情况下内核函数指针指向内核空间的内核代码。利用写任意内存模式内核漏洞修改函数指针使得修改后的指针指向用户空间的提权代码当攻击程序陷入到内核中执行到修改后的函数时就将内核执行控制流引导至用户空间提权代码将权限提权。影响范围LinuxKernelVersion4.14-4.4(影响Ubuntu和Debian发行版)漏洞的触发还需要2个条件。lKernel编译选项CONFIG_BPF_SYSCALL打开启用了bpfsyscalll/proc/sys/kernel/unprivileged_bpf_disabled设置为0允许非特权用户调用bpfsyscall。修复方案l设置/proc/sys/kernel/unprivileged_bpf_disabled为1也是最简单有效的方式虽然漏洞仍然存在但会让exp失效l使用Ubuntu的预发布源更新Ubuntu4.4的内核版本因为是非正式版其稳定性无法确认 2.实验
查看linux的版本--通过uname-a因为本次实验的提权漏洞只限于部分Linux内核版本LinuxKernelVersion4.14-4.4cat/proc/sys/kernel/unprivileged_bpf_disabled通过这个查看是否存在文件如果存在则返回0切换到用户m同时切换到目录并且查看文件信息 1.sudo gcc -o m upstream44.c
sudo chmod ax m
编写代码发现用户变为了root 3.总结
1.Kernel编译选项CONFIG_BPF_SYSCALL打开启用了bpfsyscall2.l/proc/sys/kernel/unprivileged_bpf_disabled设置为0允许非特权用户调用bpfsyscall。
3.修复方案l设置/proc/sys/kernel/unprivileged_bpf_disabled为1也是最简单有效的方式虽然漏洞仍然存在但会让exp失效l使用Ubuntu的预发布源更新Ubuntu4.4的内核版本因为是非正式版其稳定性无法确认.
4.了解了漏洞原理