一、攻击技术
1、代码注入攻击
代码注入可造成缓冲区溢出,即是指计算机对接收的输入数据没有进行有效的检测,向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。如:CVE-2017-5123 waitid 漏洞
2、代码重用攻击
代码重用攻击被广泛用于漏洞攻击中,可以绕过代码不可执行、动态代码签名等安全机制,如rop(return-Oriented Programming)和jop(Jump-Oriented Programming)。其主要是在代码空间中寻找被称为gadget地址的一连串目标指令,且其以jmp结尾。跳转目标可以是寄存器或任意地址,在执行了一些指令后可以再跳回代码块,即通过gadget地址完成代码跳转
3、提权攻击
提权攻击就是攻击机器的内核,让机器以更高的权限执行代码,进而绕过设置的所有安全限制。现有的针对Linux内核的权限提升攻击,通常利用内核代码漏洞,篡改内核函数钩子,使其指向内核中的敏感函数。如:CVE-2011-1495、CVE-2011-1169、CVE-2011-1017、CVE-2015-3636漏洞等
二、防护技术
1、SELinux为安全加固型Linux内核,它可采用白名单的方式默认禁止任意进程大部分的行为,包括:限制文件访问,限制系统调用及调用参数。
2、SMEP 保护指监管模式执行保护,即内核空间无法执行用户空间的代码,也就是说禁止内核对用户空间的访问,实现一个完全的用户空间权限控制,可防止提权攻击。
3、SMAP保护指监管模式访问保护,即内核空间无法访问用户空间的数据。
4、ASLR保护是指地址空间布局随机化,使得可执行文件和动态加载库之间的间隔无序排列,可防止缓冲区溢出攻击。
5、KASLR保护指内核代码在内存中地址随机化保护。每次系统启动时,内核代码在内存中的位置都是随机的,不再使用固定基地址加载。
6、DEP指数据执行保护,它是一组软硬件,其可在存储器上执行额外检查以防止在系统上执行恶意代码。防止数据页作为代码执行,可以有效地分离数据和代码。通常,不执行默认堆和堆栈中的代码。硬件对从这些地方执行的代码进行DEP检测,在发现执行的情况下发生异常。 该方式可以防止缓冲区溢出攻击和代码重用攻击。
7、PXN (Privileged Execute-Never),该技术可使系统在内核状态下,无法直接执行用户态代码