- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 643字
- 2020-10-30 17:56:47
2.6.11 PaX
在Linux中,不可執行棧的概念最先由PaX內核補丁提出。PaX特別把程序內存標記為不可寫的,并把數據內存標記為不可執行的。PaX還提供了地址空間布局隨機化(ASLR,在2.6.1節處討論)。它終止任何試圖將控制轉移到不可執行的內存的程序。如果NX技術可用,PaX可以使用它,否則,PaX可以效仿它(代價是較慢的性能)。把那些將控制轉移到不可執行的內存的嘗試中斷可以減少任何遠程代碼執行或信息泄露漏洞攻擊,導致一個單純的拒絕服務攻擊,這使得PaX對于 DoS是保護信息或防止弧注入的一個可以接受的后果的系統的理想選擇。無法容忍DoS的系統不應該使用PaX。PaX是現在的grsecurity項目的一部分,該項目為Linux內核提供了一些額外的安全增強。
StackGap。很多基于棧的緩沖區溢出的利用都依賴于內存中一個已知位置的緩沖區。如果攻擊者能夠覆蓋位于溢出緩沖區內一個固定位置的函數返回地址,就能執行攻擊者提供的代碼。如果在棧中分配棧內存時加入隨機大小的空隙,則可以使得攻擊者更難定位棧上的返回地址并僅消耗一頁實存(real memory)。這對棧的起始地址加入了隨機偏移量,因此攻擊者不會從程序的一次運行而知道下一次運行的棧上的任何項目的絕對地址。這種緩解措施,通過把與先前顯示的、允許讓JIT編譯的相同的代碼添加到Linux內核,可以相對容易地添加到一種操作系統。
雖然Stackgap使得攻擊者對漏洞的利用變得更加困難,但它并不能阻止攻擊者利用相對地址而非絕對地址發起攻擊。
其他平臺。ASLR自2007年以來,在自2007年以來Mac OS X(10.5)中是部分可用的,并自2011年(10.7)以來是全部功能都可用的。自4.3版本以來,它也一直在iOS中可用(用于iPhone和iPad)。
- Java多線程編程實戰指南:設計模式篇(第2版)
- Mastering Python Scripting for System Administrators
- Python零基礎快樂學習之旅(K12實戰訓練)
- Django:Web Development with Python
- Mastering OpenCV 4
- 差分進化算法及其高維多目標優化應用
- Getting Started with Python Data Analysis
- 小程序開發原理與實戰
- R大數據分析實用指南
- C語言程序設計同步訓練與上機指導(第三版)
- Android程序設計基礎
- RSpec Essentials
- PHP編程基礎與實踐教程
- 鴻蒙OS應用編程實戰
- PyQt編程快速上手