一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)計(jì)LSM鉤子提升Linux漏洞安全性

Linux閱碼場(chǎng) ? 來(lái)源:Linux閱碼場(chǎng) ? 作者:Linux閱碼場(chǎng) ? 2022-07-11 10:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Tracee是一個(gè)用于Linux的運(yùn)行時(shí)安全性和取證的開源項(xiàng)目,用于解決常見的Linux安全性問題。通過利用Linux擴(kuò)展的Berkeley Packet Filter (eBPF)的技術(shù)優(yōu)勢(shì),在內(nèi)核運(yùn)行時(shí)跟蹤系統(tǒng)和應(yīng)用程序,以便獲取相應(yīng)的數(shù)據(jù)信息。Tracee分析收集的事件可以用來(lái)檢測(cè)可疑的行為模式,在本文中,我將分享從使用eBPF和Linux安全模塊(LSM)鉤子的角度,來(lái)分析在解決Linux漏洞(如TOCTOU類型)中學(xué)到的經(jīng)驗(yàn)教訓(xùn)。

設(shè)計(jì)LSM鉤子來(lái)提升安全性

在正在運(yùn)行的應(yīng)用程序中,通常是通過系統(tǒng)調(diào)用與操作系統(tǒng)進(jìn)行交互。出于這個(gè)原因,安全從業(yè)者會(huì)使用系統(tǒng)調(diào)用來(lái)分析運(yùn)行中的應(yīng)用程序的行為。重點(diǎn)在于選擇收集系統(tǒng)調(diào)用的方法,因?yàn)楂@取到的參數(shù)值和操作系統(tǒng)實(shí)際使用的參數(shù)值之間可能存在差距。

eBPF允許在無(wú)需更改內(nèi)核源代碼或加載內(nèi)核模的情況下,在Linux內(nèi)核中運(yùn)行沙盒程序。通過使用kprobes附加到Linux Security Module (LSM)掛鉤上,我們可以收集內(nèi)核實(shí)際使用的參數(shù)值。下面是具體使用LSM鉤子需要克服的一些問題:

準(zhǔn)確理解相對(duì)路徑

在Linux中,當(dāng)從用戶程序中讀取信息時(shí),path參數(shù)可以包含一個(gè)相對(duì)路徑。

例如,當(dāng)調(diào)用一個(gè)程序時(shí),Tracee可以使用以下參數(shù)獲取一個(gè)系統(tǒng)調(diào)用:

·open(“。./。./directory/file”, O_RDONLY)

·open(“。/test/。./。./directory/file”, O_RDONLY)

這些系統(tǒng)調(diào)用中的路徑可能指向相同的位置,但問題來(lái)了,根據(jù)給定的參數(shù),很難精確定位絕對(duì)且始終唯一的規(guī)范路徑。在構(gòu)建安全策略時(shí),規(guī)范路徑的重要性變得更加明顯,因?yàn)橄鄬?duì)路徑的意圖和效果可能太過模糊。

找出鏈接文件

例如,用戶程序給出的某個(gè)文件的參數(shù)值可能會(huì)包含指向其他文件的鏈接。在Linux中,我們可以創(chuàng)建到一個(gè)文件的符號(hào)鏈接,其方式是一個(gè)文件充當(dāng)另一個(gè)文件或目錄的引用。操作系統(tǒng)使用符號(hào)鏈接到達(dá)被鏈接的文件,并執(zhí)行給定的命令。請(qǐng)看下面的例子,創(chuàng)建了一個(gè)名為python的文件,并將其鏈接到一個(gè)惡意的二進(jìn)制文件my_malware:

1b2be154-00c1-11ed-ba43-dac502259ad0.png

當(dāng)運(yùn)行python時(shí),我們可以看到Tracee跟蹤了兩個(gè)事件。其一是帶有參數(shù)值的系統(tǒng)調(diào)用 。/python。但實(shí)際上,python是象征性地鏈接到~/bin/my_malware,第二個(gè)就是被Tracee捕獲的security_bprm_check事件返回了實(shí)際執(zhí)行的文件的路徑名。

1b406f3e-00c1-11ed-ba43-dac502259ad0.png

TOCTOU分析

當(dāng)試圖獲取用戶程序的參數(shù)值時(shí),如果只分析系統(tǒng)調(diào)用參數(shù),結(jié)果可能會(huì)受到條件競(jìng)爭(zhēng)的影響而錯(cuò)過關(guān)鍵細(xì)節(jié)。這是因?yàn)樵讷@取信息后,用戶程序可以基于另一個(gè)并發(fā)線程,來(lái)進(jìn)行更改系統(tǒng)調(diào)用參數(shù)。

例如,當(dāng)調(diào)用一個(gè)程序時(shí),Tracee可以使用以下參數(shù)獲取一個(gè)系統(tǒng)調(diào)用:

execve(“/bin/ls”, NULL, 0)

1b54634a-00c1-11ed-ba43-dac502259ad0.png

在進(jìn)程中某一線程和內(nèi)核調(diào)用執(zhí)行Syscall之間會(huì)存在同一時(shí)間點(diǎn)。在這個(gè)時(shí)間點(diǎn)開始階段,通過使用指向進(jìn)程地址空間中內(nèi)存位置的指針,pathname參數(shù)被傳遞給內(nèi)核。在這個(gè)期間,進(jìn)程的另一個(gè)線程可以快速更改路徑名,最后內(nèi)核來(lái)更新路徑名。

繼續(xù)我們的例子,另一個(gè)線程可以將第一個(gè)參數(shù)從/bin/ls更改為/bin/malicious,后者將由內(nèi)核執(zhí)行,而前者將由Tracee記錄。這個(gè)場(chǎng)景被稱為TOCTOU競(jìng)態(tài)。攻擊者可以利用它來(lái)影響檢查和真正使用之間的記錄值,這樣會(huì)導(dǎo)致收集到的數(shù)據(jù)不準(zhǔn)確,并誤導(dǎo)安全研究人員或自動(dòng)檢測(cè)工具。

基于上面的原因,決定在Tracee中連同Syscall數(shù)據(jù)一起使用LSM鉤子來(lái)進(jìn)行追蹤。像security_file_open這樣的事件,包含內(nèi)核實(shí)際使用的路徑名,并與上報(bào)的常規(guī)Syscall事件交叉引用。

簡(jiǎn)化分析過程

我們都知道在Linux中,Everything is a file這句著名的口號(hào)(https://en.wikipedia.org/wiki/Everything_is_a_file),是的,所有東西都是文件,需要使用文件描述符才能與之交互。當(dāng)打開一個(gè)文件時(shí)(例如使用open),你會(huì)收到一個(gè)文件描述符。使用這些系統(tǒng)調(diào)用openat, unlinkat, execveat, accept, connect, bind, listen等等來(lái)與打開的文件進(jìn)行交互。由于這個(gè)原因,如果我們想要分析在一個(gè)文件上執(zhí)行的操作,那就必須跟蹤其打開的文件描述符,而Socket允許在不同的程序之間傳遞打開的文件描述符,這樣就會(huì)使分析更加困難。

對(duì)于使用Tracee的LSM鉤子事件,跟蹤文件描述符變得無(wú)關(guān)重要,因?yàn)長(zhǎng)SM事件已經(jīng)包含了相關(guān)的數(shù)據(jù),比如完整的路徑名。這使得在分析問題時(shí)可以避免上述的影響,更加簡(jiǎn)化分析流程。

結(jié)論

Tracee是一個(gè)易于使用的Linux運(yùn)行時(shí)安全和取證工具,采用了目前最為火熱功能更為強(qiáng)大的eBPF技術(shù),可以讓我們更好地理解程序的運(yùn)行時(shí)行為,并打破對(duì)類似安全軟件構(gòu)成困難和挑戰(zhàn)的桎梏,為安全分析人員提供進(jìn)一步深入分析的方案。

原文標(biāo)題:利用LSM鉤子打破系統(tǒng)調(diào)用跟蹤桎梏

文章出處:【微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11511

    瀏覽量

    213783
  • 源代碼
    +關(guān)注

    關(guān)注

    96

    文章

    2953

    瀏覽量

    68372
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3337

    瀏覽量

    59031

原文標(biāo)題:利用LSM鉤子打破系統(tǒng)調(diào)用跟蹤桎梏

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何維護(hù)i.MX6ULL的安全內(nèi)核?

    為 5.15.158。 因此,我們想知道:是否有可能基于這個(gè) BSP 平臺(tái)實(shí)現(xiàn)安全的 i.MX 6ULL 系統(tǒng)?您會(huì)推薦上游的 linux-fslc 還是 linux-imx (BSP) 內(nèi)核樹?顯然,
    發(fā)表于 04-01 08:28

    意法半導(dǎo)體與HighTec合作提升汽車軟件安全性

    意法半導(dǎo)體與HighTec EDV-Systeme公司攜手合作,共同開發(fā)了一套先進(jìn)的汽車功能安全整體解決方案。該方案旨在加速安全關(guān)鍵的汽車系統(tǒng)開發(fā)進(jìn)程,同時(shí)提升軟件定義汽車的安全性和經(jīng)
    的頭像 發(fā)表于 02-18 09:52 ?513次閱讀

    AGV在工作時(shí)如何保持高強(qiáng)度安全性

    AGV實(shí)現(xiàn)高效低成本物料運(yùn)輸,安全性高,通過安全裝置、交通管制避免碰撞。區(qū)域控制、傳感器控制、綜合控制等方式實(shí)現(xiàn)交通管理。AGV提升企業(yè)技術(shù)進(jìn)步,有望在更多領(lǐng)域發(fā)揮廣泛作用。
    的頭像 發(fā)表于 01-02 11:46 ?447次閱讀
    AGV在工作時(shí)如何保持高強(qiáng)度<b class='flag-5'>安全性</b>

    如何實(shí)現(xiàn) HTTP 協(xié)議的安全性

    協(xié)議的安全性,可以采取以下幾種方法: 1. 使用HTTPS HTTPS(安全超文本傳輸協(xié)議)是HTTP的安全版本,它在HTTP的基礎(chǔ)上通過SSL/TLS協(xié)議提供了數(shù)據(jù)加密、數(shù)據(jù)完整驗(yàn)
    的頭像 發(fā)表于 12-30 09:22 ?932次閱讀

    集中告警管理如何提升設(shè)施安全性?

    在工業(yè)或商業(yè)建筑中,集中告警管理已成為確保安全性或檢測(cè)故障的必備工具。它是如何提升設(shè)施安全性的?歡迎大家閱讀文章了解~
    的頭像 發(fā)表于 12-13 15:51 ?427次閱讀
    集中告警管理如何<b class='flag-5'>提升</b>設(shè)施<b class='flag-5'>安全性</b>?

    電池的安全性測(cè)試項(xiàng)目有哪些?

    電池的安全性測(cè)試是保證電池在實(shí)際使用過程中穩(wěn)定、安全的重要手段。通過一系列嚴(yán)格的測(cè)試項(xiàng)目,能夠有效評(píng)估電池在不同條件下的表現(xiàn),并提前發(fā)現(xiàn)潛在的安全隱患。對(duì)于消費(fèi)者而言,了解這些測(cè)試項(xiàng)目不僅能幫助他們
    的頭像 發(fā)表于 12-06 09:55 ?2122次閱讀
    電池的<b class='flag-5'>安全性</b>測(cè)試項(xiàng)目有哪些?

    在電氣安裝中通過負(fù)載箱實(shí)現(xiàn)最大效率和安全性

    在電氣安裝中,負(fù)載箱是一種常用的設(shè)備,主要用于模擬實(shí)際的電力負(fù)載,以便進(jìn)行各種電氣設(shè)備的測(cè)試和調(diào)試。通過負(fù)載箱,可以實(shí)現(xiàn)最大效率和安全性,從而提高電氣設(shè)備的運(yùn)行性能和使用壽命。 負(fù)載箱可以實(shí)現(xiàn)最大
    發(fā)表于 11-20 15:24

    socket編程的安全性考慮

    在Socket編程中,安全性是一個(gè)至關(guān)重要的考慮因素。以下是一些關(guān)鍵的安全性考慮和措施: 1. 數(shù)據(jù)加密 使用TLS/SSL協(xié)議 :TLS/SSL(傳輸層安全性/安全套接層)是網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-01 16:46 ?743次閱讀

    UWB模塊的安全性評(píng)估

    UWB(超寬帶)模塊的安全性評(píng)估是一個(gè)復(fù)雜而關(guān)鍵的過程,涉及多個(gè)方面,包括技術(shù)特性、加密機(jī)制、抗干擾能力、物理層安全等。以下是對(duì)UWB模塊安全性評(píng)估的分析: 一、技術(shù)特性帶來(lái)的安全性
    的頭像 發(fā)表于 10-31 14:17 ?845次閱讀

    智能系統(tǒng)的安全性分析

    智能系統(tǒng)的安全性分析是一個(gè)至關(guān)重要的過程,它涉及多個(gè)層面和維度,以確保系統(tǒng)在各種情況下都能保持安全、穩(wěn)定和可靠。以下是對(duì)智能系統(tǒng)安全性的分析: 一、數(shù)據(jù)安全性 數(shù)據(jù)加密 : 采用對(duì)稱加
    的頭像 發(fā)表于 10-29 09:56 ?745次閱讀

    云計(jì)算安全性如何保障

    云計(jì)算的安全性是一個(gè)復(fù)雜而多維的問題,涉及多個(gè)層面和多種技術(shù)手段。為了保障云計(jì)算的安全性,需要采取一系列綜合措施,以下是具體的保障方法: 一、數(shù)據(jù)加密 數(shù)據(jù)加密是保護(hù)云計(jì)算安全性的核心手段之一
    的頭像 發(fā)表于 10-24 09:14 ?891次閱讀

    如何提升SoC的安全性

    安全啟動(dòng)確保SoC從可信的固件開始啟動(dòng),防止未授權(quán)或惡意軟件加載。SoC內(nèi)置一個(gè)只讀存儲(chǔ)器(ROM)中的Bootloader,這段代碼不可更改,用于執(zhí)行初始啟動(dòng)。固件鏡像在編譯完成后使用開發(fā)者的私鑰
    的頭像 發(fā)表于 10-21 14:19 ?783次閱讀

    固態(tài)電池安全性怎么樣

    固態(tài)電池在安全性方面表現(xiàn)出顯著的優(yōu)勢(shì),這主要得益于其獨(dú)特的固態(tài)電解質(zhì)結(jié)構(gòu)。以下是對(duì)固態(tài)電池安全性的詳細(xì)分析:
    的頭像 發(fā)表于 09-15 11:47 ?2132次閱讀

    樓宇自控系統(tǒng):提升建筑安全性的隱形盾牌

    樓宇自控系統(tǒng):提升建筑安全性的隱形盾牌 在城市的鋼鐵森林中,每一座建筑都是人類智慧與創(chuàng)造力的結(jié)晶。然而,隨著建筑規(guī)模的不斷擴(kuò)大和復(fù)雜的增加,其安全性問題也日益凸顯。在這個(gè)背景下,樓宇
    的頭像 發(fā)表于 08-22 13:43 ?453次閱讀

    請(qǐng)問DM平臺(tái)訪問安全性如何控制?

    DM平臺(tái)訪問安全性如何控制?
    發(fā)表于 07-25 06:10