雪城大學資訊保安講義 五 競態條件

2021-07-30 22:47:01 字數 1073 閱讀 7473

原文:race condition vulnerability

譯者:飛龍

假設上面的程式執行的非常慢。執行程式中的每行語句需要一分鐘。請思考下列問題:

攻擊策略:

回到現實:這個程式執行得很快,並且我們沒有一分鐘時間間隔。我們可以做什麼?

競態條件攻擊

提高成功率:競態條件攻擊的最關鍵步驟,出現在 toctou 間隔中。由於我們不能修改漏洞程式,我們可以做的只有讓我們的攻擊程式和目標程式一起執行。並希望鏈結的時機正好就在間隔之內。不幸的是,我們不能完成完美的時間規劃。因此,攻擊是否成功是個概率。攻擊成功的概率可能很低,如果間隔很小。我們如何提公升概率呢?

另乙個例子(set-uid 程式):

file = "/tmp/x"; 

fileexist = check_file_existence(file);

if (fileexist == false)

為什麼存在漏洞?

使用原子操作

檢查-使用-再檢查方式

檢查-使用-重複方式:在幾個迭代內重複訪問和開啟。在下面的示例中,攻擊者需要贏得五個競態條件(1~2,2~3,3~4,4~5,5~6):

1:  if (access("tmp/x", o_rdwr)) goto error handling 

2: else f1 = open("/tmp/x", o_rdwr);

3: if (access("tmp/x", o_rdwr)) goto error handling

4: else f2 = open("/tmp/x", o_rdwr);

5: if (access("tmp/x", o_rdwr)) goto error handling

6: else f3 = open("/tmp/x", o_rdwr);

// check whether f1, f2, and f3 has the same i-node (using fstat)

基於最小許可權原則:

雪城大學資訊保安講義 4 1 4 2

原文 buffer over ow vulnerabilities and attacks 譯者 飛龍 這個講義的 區域 area 和 段 segment 與多數教程正好相反,譯文中已更正。在 pc 架構中,程式中有四個基本讀寫段 棧 資料 bss 和堆。資料 bss 以及堆區可統稱為 資料區域 在...

雪城大學資訊保安講義 二 Unix 安全概覽

原文 unix security basics 譯者 飛龍 使用者需要使用密碼登入。加密的密碼儲存在 etc shadow。使用者資訊儲存在 etc passwd,之前 不再 用於儲存密碼的地方。下面是這個檔案的乙個條目的示例 john x 30000 40000 john doe home joh...

雪城大學資訊保安講義 一 引言

原文 overview of computer security 譯者 飛龍 優秀的安全專業人員擁有兩個重要的技能 1 安全的感知,以及 2 安全原則的知識。我希望完成這門課的學生可以擁有二者。擁有不意味著 知道 它意味著能夠應用這些技能。配置計算機系統時的風險 開發計算機系統時的風險 安全的感知 ...