最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一篇讓你掌握Linux內(nèi)核,漏洞安全與虛擬內(nèi)存管理(值得大神們收藏)

2022-03-26 15:46 作者:補(bǔ)給站Linux內(nèi)核  | 我要投稿

Linux內(nèi)核面試常見高頻問題如下:

  1. 高速側(cè)信道攻擊的原理機(jī)制?

  2. CPU熔斷漏洞攻擊?

  3. CPU“幽靈”漏洞變體攻擊原理機(jī)制?

一、CPU熔斷/幽靈漏洞解決方案

  • 側(cè)信道攻擊(SCA):密碼學(xué)中常見暴力攻擊。針對加密電子設(shè)備在運(yùn)行過程中時間消耗、功率消耗、電磁輻射之類的側(cè)信道信息泄露而對加密設(shè)備進(jìn)行攻擊。L1高速緩存是靠近CPU核心,它的訪問速度是最快。(大約300個時鐘周期,時間差異來進(jìn)行攻擊)。

通過視圖來研究:高級緩存?zhèn)刃诺拦糁衅平鈹?shù)據(jù)的流程,具體如下:

  1. 攻擊者清空user_probe對應(yīng)的高速緩存行;

  2. 攻擊者訪問受限地址attacked_mem_addr,CPU發(fā)生異?,F(xiàn)象;

  3. 由于亂序執(zhí)行,CPU預(yù)取了attacked_mem_addr的值;

  4. 根據(jù)預(yù)取的值來訪問user_probe,CPU把數(shù)據(jù)加載到高速緩存行里;

  5. 遍歷User_probe數(shù)據(jù),測量訪問時間來推測attacked_mem_addr的值。



  • 亂序執(zhí)行、異常處理及地址空間(熔斷漏洞和計(jì)算機(jī)架構(gòu)緊密相關(guān))

【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦!??!前100名進(jìn)群領(lǐng)取,額外贈送一份價值699的內(nèi)核資料包(含視頻教程、電子書、實(shí)戰(zhàn)項(xiàng)目及代碼)??

?

亂序執(zhí)行流水線中有兩個功能:

  1. 消除指令之間的寄存器讀后寫(WAR)相關(guān)和寫后寫(WAW)相關(guān);

  2. 當(dāng)指令發(fā)生例外或者轉(zhuǎn)移指令猜測錯誤而取消后面的指令時,可用來保證現(xiàn)場精確。

  • 我們從處理器角度分析,指令順序發(fā)車,亂序超車,順序歸隊(duì),這個容器就是保留站,這種亂執(zhí)行的機(jī)制就是我們所講的亂序執(zhí)行。


  • // 物理地址到虛擬地址轉(zhuǎn)換由這個宏__va來完成的


    • 從上面的流程:就是物理地址轉(zhuǎn)換成虛擬地址就完成,其實(shí)加上一個大小為0xffff888000000000的偏移量即可。

    • 虛擬地址到物理地址的轉(zhuǎn)換就更簡單,直接將偏移量減掉就可以。


    • 二、PAS/mm_struct詳解

    • malloc()是用戶態(tài)常用的分配內(nèi)存接口函數(shù),mmap()是用戶態(tài)用于建立文件映射或匿名映射的函數(shù)。 比如進(jìn)程地址空間在內(nèi)核中用struct vm_area_struct數(shù)據(jù)結(jié)構(gòu)進(jìn)行描述,簡稱為VMA,也被稱為進(jìn)程地址空間或進(jìn)程線性區(qū)。因?yàn)檫@些地址空間歸屬用戶進(jìn)程,所以在用戶進(jìn)程的struct mm_struct數(shù)據(jù)結(jié)構(gòu)也有相應(yīng)的成員。

    • 1、PAS(進(jìn)程地址空間):指進(jìn)程可尋址的虛擬地址空間

    • 在32位CPU當(dāng)中,進(jìn)程可以尋址4GB的地址空間,但是進(jìn)程沒有權(quán)限去尋址內(nèi)核空間的虛擬地址,只能通過系統(tǒng)調(diào)用的方式間接訪問。內(nèi)存區(qū)域包含內(nèi)容:代碼段映射、數(shù)據(jù)段映射、用戶進(jìn)程的棧、堆映射區(qū)域、MMAP映射區(qū)域。

    • 2、內(nèi)核描述符mm_struct

    • Linux內(nèi)核需要管理每個進(jìn)程所有的內(nèi)存區(qū)域及它們對應(yīng)的頁表映射,所以必須抽象出一個數(shù)據(jù)結(jié)構(gòu)(mm_struct)。進(jìn)程的進(jìn)程控制塊(PCB)數(shù)據(jù)結(jié)構(gòu)task_struct中有一個指針mm指向這個mm_struct數(shù)據(jù)結(jié)構(gòu)。

    • A、task_struct(進(jìn)程描述符)內(nèi)核對應(yīng)源碼分析如下:


    • 我們從進(jìn)程的角度來看內(nèi)存管理 ,直接沿著mm_struct數(shù)據(jù)結(jié)構(gòu)進(jìn)行進(jìn)一步延伸和思考,具體結(jié)構(gòu)視圖如下:


    • B.VMA管理(vm_area_struct)

    三、malloc系統(tǒng)調(diào)用

    • 在C語言程序設(shè)計(jì)當(dāng)中,malloc()是志專門用于內(nèi)存分配函數(shù)。假設(shè)系統(tǒng)中有進(jìn)程X和進(jìn)程Y,分別使用FuncX和FuncY函數(shù)分配對應(yīng)內(nèi)存。

    • malloc()函數(shù)-->Linux內(nèi)核系統(tǒng)調(diào)用brk向系統(tǒng)申請內(nèi)存。在32位Linux內(nèi)核中,每個用戶進(jìn)程擁有3GB的虛擬空間。用戶進(jìn)程的可執(zhí)行文件由代碼和數(shù)據(jù)段組成,數(shù)據(jù)段包括所有的靜態(tài)分配的數(shù)據(jù)空間,比如全局變量、靜態(tài)局部變量等。這些空間在可執(zhí)行文件裝載時,內(nèi)核就為其分配好這些空間,包括虛擬地址和物理頁面。Linux內(nèi)核brk系統(tǒng)調(diào)用視圖如下:


    • 處理器的MMU硬件單元處理最小單元為頁,所以內(nèi)核分配內(nèi)存、建立虛擬地址和物理地址映射關(guān)系都以頁為單位,PAGE_ALIGN(addr)宏讓地址addr按頁面大小對齊。

    • Linux內(nèi)核malloc函數(shù)實(shí)現(xiàn)流程視圖如下:







    一篇讓你掌握Linux內(nèi)核,漏洞安全與虛擬內(nèi)存管理(值得大神們收藏)的評論 (共 條)

    分享到微博請遵守國家法律
    通渭县| 蛟河市| 康平县| 儋州市| 手游| 甘洛县| 怀安县| 永嘉县| 罗江县| 灵宝市| 巨野县| 育儿| 三台县| 大庆市| 汉川市| 深泽县| 青河县| 衡山县| 莱西市| 房产| 施甸县| 巴中市| 通海县| 灵宝市| 舞阳县| 陵水| 淅川县| 阆中市| 英山县| 镇康县| 桐乡市| 建阳市| 新营市| 通州市| 凤阳县| 岑巩县| 子长县| 梧州市| 承德县| 桃源县| 苗栗县|