当前位置: 服务支持 >  技术文档 >  Linux系统下的漏洞缓解措施详解

Linux系统下的漏洞缓解措施详解

阅读数 80
点赞 25
copyright 著作权
article_banner

Linux下的程序保护机制具体包括如下:

1、NX

    NX保护(数据执行保护)在windows中也被称为DEP,是指禁止程序在非可执行的内存区中执行指令。通过现代的内存保护单元(MPU)机制对程序内存按页的粒度进行全线设置,其基本规则为可写权限与可执行权限互斥。
    因此,在开启NX保护的程序中不能直接使用shellcode执行任意代码。所有可以被修改写入shellcode的内存都不可执行,所有可以被执行的代码数据都是不可被修改的。
    gcc默认开启NX保护,关闭方法是在编译时加入“-z execstack”参数。

2、Stack Canary

    Stack Canary保护是专门针对栈溢出攻击设计的一种保护机制。由于栈溢出攻击的主要目标是通过溢出覆盖函数栈高位的返回地址,因此其思路是在函数开始执行前,即在返回地址前写入一个字长的随机数据,在函数返回前校验该值是否被改变,如果被改变,则认为是发生了栈溢出。程序会直接终止。
    gcc默认使用Stack Canary保护,关闭方法是在编译时加入“-fno-stack-protector”参数。

3、ASLR

    Address Space Layout Randomization,地址空间随机化。ASLR的目的是将程序的堆栈地址和动态链接库的加载地址进行一定的随机化,这些地址之间是不可读写执行的未映射内存,降低攻击者对程序内存结构的了解程序。这样,即使攻击者布置了shellcode并可以控制跳转,由于内存地址结构未知,依然无法执行shellcode。
    ASLR是系统等级的保护机制,使用root权限可以进行修改。关闭方法是修改/proc/sys/kernel/randomize_va_space文件的内容为0。

4、PIE

    代码段随机化,与ASLR保护十分相似,PIE保护的目的是让可执行程序ELF的地址进行随机化加载,从而使得程序的内存结构对攻击者完全未知,进一步提高程序的安全性。
    gcc编译时开启PIE的方法为添加参数“-fpic -pie”。较新版本的gcc默认开启PIE,可以设置“-no-pie”来关闭。

5、Relro

    重定位,一般分为partial relro和full relro,前者重定位信息(如got表)可写,后者不可写。
    full relro保护与linux下的Lazy Binding机制有关,其主要作用是禁止.GOT.PLT表和其他一些相关内存的读写,从而阻止攻击者通过写.GOT.PLT表来进行攻击利用的手段。
    gcc开启full relro的方法是添加参数“-z retro”。

参考:
《从0到1:CTFer成长之路》
《CTF特训营》

相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空