linux 內核地址隨機化,GNU/Linux內核的地址隨機化

地址空間布局隨機化(ASLR)是一項增加安全性的技術,***者發現漏洞之后開始編寫exploit時如果要考慮繞過ASLR這會增加編寫exploit的難度,最早是2001年Grsecurity社區(強悍的社區,直到今天還在為各種各樣的加固為自由軟件安全社區作出持續而杰出的貢獻)針對GNU/Linux的PaX補丁中出現,后來GNU/Linux內核對用戶態地址隨機化的支持在2005年的2.6.12版本合并到了mainline,但直到今天內核中還是使用固定的虛擬地址。2011年的時候,Dan Rosenberg提議增加內核ASLR的功能但后來一直沒有實施下去,最近Kees Cook向社區提交內核地址隨機化的補丁,社區可能會在最近把這個補丁合并到mainline upstream repo里去。

繞過ASLR并不是一門新的技術,早在2002年的Phrack Issue 59中就已經有一篇論文詳細的描述了原理和細節,個人認為內核空間的ASLR是非常有必要的,在內存和硬盤上隱藏內核空間地址是一個暫時的方案,比如:

測試平臺:SUSE Linux Enterprise Server 11 SP2

[檢查默認的內核配置]

* 從硬盤鏡像上獲得地址

shawn@linux-7kz0:~> grep do_fork /boot/System.map-3.0.42-0.7-default ffffffff81058cd0 T do_fork

ffffffff8143959a t do_fork_idle

* 從內存中獲得地址

shawn@linux-7kz0:~> cat /proc/kallsyms | grep do_fork

ffffffff81058cd0 T do_fork

ffffffff8143959a t do_fork_idle

[簡單的加固]

* 使用root執行:

linux-7kz0:/home/shawn # chmod o-r /boot/System.map-3.0.42-0.7-default

linux-7kz0:/home/shawn # sysctl -w kernel.kptr_restrict=1

[驗證結果]

shawn@linux-7kz0:~> grep do_fork /boot/System.map-3.0.42-0.7-default grep: /boot/System.map-3.0.42-0.7-default: Permission denied

shawn@linux-7kz0:~> cat /proc/kallsyms | grep do_fork 0000000000000000 T do_fork 0000000000000000 t do_fork_idle

這個方法只能針對特殊定制的內核,但對于發部分GNU/Linux發行版,內核鏡像都是一樣的,***者可以通過其他方式獲得固定地址,KASLR可以在一定程度上延緩***者的速度,但實現上可能帶給內核一些副作用,有人堅決反對在內核空間實現地址隨機化。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273042.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273042.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273042.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Yii2的一些問題

Yii2中刪除能不能串著用 Yii2中find、findAll有什么區別 Yii2中User::findOne($id)和User::find->where([id>1])->one; 會員登錄信息 是以什么樣的形式存放在Yii::$app->user->identity 里面的? session的形式 http://www.cnblogs.com/kuyuecs/archi…

linux系統硬盤設置密碼,LUKS:Linux下磁盤加密

Linux下磁盤加密LUKS(Linux Unified Key Setup)為Linux硬盤加密提供了一種標準,它不僅能通用于不同的Linux發行版本,還支持多用戶/口令。因為它的加密密鑰獨立于口令,所以如果口令失密,我們可以迅速改變口令而無需重新加密真個硬盤…

Hibernate查詢

9.1 Hibernate數據查詢 數據查詢與檢索是Hibernate的一個亮點。Hibernate的數據查詢方式主要有3種,它們是: l Hibernate Query Language(HQL) l Criteria Query l Native SQL 下面對這3種查詢方式分別進…

linux x86 io端口映射,linux中的 IO端口映射和IO內存映射

下面是今天看到兩篇關于linux中的 IO端口映射和IO內存映射的文章,時間關系,沒來得及深入理解,有空好好看看CPU地址空間CPU地址空間(一)地址的概念1)物理地址:CPU地址總線傳來的地址,由硬件電路控制其具體含義。物理地址中很大一部分是留給內存條中的內存…

單例模式 創建對象

兩種選擇 1 使用pthread_once, once是類的成員變量 只執行一次Create create的作用是創建一個對象 2 使用 static lock 如下所示,注意lock必須是static的,否則是局部變量,每個線程都有自己的lock,無法保證只執行一次。…

Linux c編譯庫路徑,【一點一點學Linux C】交叉編譯時候如何配置連接庫的搜索路徑...

交叉編譯的時候不能使用本地(i686機器,即PC機器,研發機器)機器上的庫,但是在做編譯鏈接的時候默認的是使用本地庫,即/usr/lib,/lib兩個目錄。因此,在交叉編譯的時候,要采取一些方法使得在編譯鏈接的時候找到…

[NBUT 1458 Teemo]區間第k大問題,劃分樹

裸的區間第k大問題&#xff0c;劃分樹搞起。 #pragma comment(linker, "/STACK:10240000") #include <map> #include <set> #include <cmath> #include <ctime> #include <deque> #include <queue> #include <stack> #inc…

Linux的軟件包封裝格式有,linux軟件安裝包詳解---全

詳細介紹了常見的四種Linux應用軟件安裝包及其安裝方法。一、解析Linux應用軟件安裝包&#xff0c;通常Linux應用軟件的安裝包有四種&#xff1a;1) tar包&#xff0c;如software-1.2.3-1.tar.gz。他是使用UNIX系統的打包工具tar打包的。2) rpm包&#xff0c;如software-1.2.3-…

人生的第一個博客(●'?'●)??--開博典禮

嘛&#xff0c;說實話&#xff0c;現在才開始&#xff0c;實在是有點晚了&#xff0c;一不小心大學都過去1年了_(:3 」∠)_ 我在專業方面的起步也是相當晚的&#xff0c;身為計算機專業&#xff0c;編程卻從大學才開始正式接觸&#xff0c;進入大學時其他方面的能力也都約等于0…

linux查看運行鐘的tomcat,linux查看tomcat啟動運行日志

Linux0&period;11內核--進程調度分析之2&period;調度[版權所有,轉載請注明出處.出處:http://www.cnblogs.com/joey-hua/p/5596830.html ] 上一篇說到進程調度歸根結底是調用timer_interrupt函數, ...iReport 下載地址iReport 下載地址: https://osdn.jp/projects/sfnet…

8月面試題目收錄

面試題收錄 常見兼容性問題&#xff1f; * png24位的圖片在iE6瀏覽器上出現背景&#xff0c;解決方案是做成PNG8.* 瀏覽器默認的margin和padding不同。解決方案是加一個全局的*{margin:0;padding:0;}來統一。* IE6雙邊距bug:塊屬性標簽float后&#xff0c;又有橫行的margin情況…

linux如何升級php版本升級,Linux?升級php版本

近來因工作需要,又沒有服務器維護人員,只能自己上陣啦。從php5.3.28->5.5.30,先自己下載php包到/usr/local/下?&#xff0c;# 解壓縮安裝包tar zxvf php-5.5.30.tar.gz# 進入目錄cd php-5.5.30// 編譯的時候一定要加入參數--enable-fpm#./configure --prefix/usr/local/php…

opencv配置

OpenCV的簡單安裝和一次性配置在這里就不贅述了&#xff0c;網上教程很多&#xff0c;可以參考一下這個鏈接里面的教程http://wenku.baidu.com/view/3b40de25453610661ed9f46b.html。 但是很多情況下面&#xff0c;我們新建一個項目就要重新配置一次OpenCV&#xff0c;那就相當…

linux ftp 工作過程,linux中ftp的安裝過程記錄[運維篇]

安裝FTP的全過程記錄&#xff0c;對于相同情況希望有所幫助。【centOS】1、查詢本機是否安裝vsftpd: rpm -qa |grep vsftpd &#xff1b;2、安裝ftp服務 yum install vsftpd;3、開啟ftp服務 chkconfig vsftpd on&#xff0c;開機啟動&#xff1b;4、手動操作ftp服務&#xff0c…

代碼命名,代碼里的命名規則:錯誤的和正確的對比 命名方法總結 “自我描述的源代碼”用代碼表達出你的思想,讓其他人通過代碼能明白你的意圖。...

http://www.aqee.net/express-names-in-code-bad-vs-clean/ 編程初學者總是把大量的時間用在學習編程語言&#xff0c;語法&#xff0c;技巧和編程工具的使用上。他們認為&#xff0c;如果掌握了這些技術技巧&#xff0c;他們就能成為不錯的程序員。然而&#xff0c;計算機編程…

linux 動態執行cp,Linux常用命令之cp、mv、rm、cat、more、head、tail、ln命令講解

上一章節中&#xff0c;我們了解到了Linux系統的最基礎的幾個文件處理命令&#xff0c;核心的是ls命令&#xff0c;在今天這章中&#xff0c;我們來繼續學習Linux對于文件操作相關的一些命令&#xff0c;比如復制、移動、刪除、查看等命令。1、cp 命令解釋命令名稱&#xff1a;…

使用DBI(perl)實現文本文件的導入導出mysql

DBI 是perl腳本連接數據庫的一個模塊。perl腳本相對shell更靈活&#xff0c;功能更強大&#xff0c;跨平臺能力強。相對可執行jar包要簡單很多。 ?1、下載安裝包DBI-1.631.tar.gzperl腳本下載的網站http://www.cpan.org/ 很多perl的組件都可以在這個網站上下載 2、解壓tar -xz…

linux 車載視頻監控,基于Linux平臺車載視頻監控系統研發-計算機科學與技術專業論文.docx...

基于Linux平臺車載視頻監控系統研發-計算機科學與技術專業論文目錄HYPERLINK \l "_bookmark0" 第一章 緒論1 HYPERLINK \l "_bookmark1" 1.1 研究背景1 HYPERLINK \l "_bookmark2" 1.2 研究動態1 HYPERLINK \l "_bookmark3" 1.3 本文工…

Linux鼠標回報率修改,鼠標回報率怎么調? 設置鼠標回報率的三種方法

鼠標回報率如何設置呢&#xff1f;鼠標回報率又稱刷新率&#xff0c;是指鼠標MCU與電腦傳輸數據頻率。鼠標回報率對于游戲玩家而言至關重要&#xff0c;但同時鼠標回報率與電腦性能息息相關。只有電腦硬件性能良好&#xff0c;才能適當提升鼠標回報率&#xff0c;以實現更高的鼠…

linux下vi修改文件用法

進入vi的命令 vi filename :打開或新建文件&#xff0c;并將光標置于第一行首 vi n filename &#xff1a;打開文件&#xff0c;并將光標置于第n行首 vi filename &#xff1a;打開文件&#xff0c;并將光標置于最后一行首 vi /pattern filename&#xff1a;打開文件&#xff…