您當前的位置:首頁 > 攝影

緩衝區溢位對伺服器安全的影響的原理是什麼?

作者:由 深信服產教中心 發表于 攝影時間:2022-11-20

緩衝區溢位對伺服器安全的影響的原理是什麼?深信服產教中心2022-11-20 14:41:35

緩衝區溢位(buffer overflow)漏洞,時常出現在我們視線範圍內,它主要是什麼樣的一種漏洞,有什麼危害,原理又是如何呢?

首先我們借用維基百科定義,初識一下什麼是緩衝區溢位:它是指在電腦學上是指標對程式設計缺陷,向程式輸入緩衝區寫入使之溢位的內容(通常是超過緩衝區能儲存的最大資料量的資料),從而破壞程式執行、趁著中斷之際並獲取程式乃至系統的控制權。

接下來向大家介紹緩衝區溢位漏洞的基本原理(希望大家已經瞭解了堆疊的工作原理)。

我們設定了2個函式,一個稱為主調函式,一個稱為被調函式。主調函式是發起功能呼叫的函式,由它呼叫被調函式。在呼叫的過程中,需透過棧這個神奇的事物,完成變數值的傳遞。

主調函式中定義了3個變數,變數A、變數B、變數C(他們不是主角)。

被調函式中定義了2個變數,變數V、變數W(主角登場)。

當主調函式呼叫被調函式過程中,棧中的結構如下圖所示。

緩衝區溢位對伺服器安全的影響的原理是什麼?

在被調函式中,變數“w”是一個8位元組的變數,用於存放字串(每個字元佔用一個位元組,8位元組)。

正常情況下,我們輸入的字串數量最多為8個字元,並賦值給變數“w”,即W=“abcdefgh”。

緩衝區溢位對伺服器安全的影響的原理是什麼?

若存在緩衝區溢位漏洞,缺少對記憶體邊界的檢查,此時輸入超過8位元組的字串,會發生什麼情況呢?

此時,給w變數賦值為“abcd efgh ijkl mnop”,堆疊情況如下圖所示。

緩衝區溢位對伺服器安全的影響的原理是什麼?

如上圖所示,棧中原存放主調函式的返回地址的值,被“mnop”字元覆寫。當棧彈出主調函式的返回地址時,會報下圖出錯。

緩衝區溢位對伺服器安全的影響的原理是什麼?

其中0x706f6e6d,代表返回地址,透過查詢ascII表不難得知,p字母的十六進位制值為“70”,o為“6f”,n為“6e”,m為“6d”,如下圖所示。

緩衝區溢位對伺服器安全的影響的原理是什麼?

【小結】

2017年披露的永恆之藍漏洞,其中就用到了緩衝區溢位原理,實現shell反彈、內網入侵等攻擊目的。

緩衝區溢位對伺服器安全的影響的原理是什麼?

除此之外,已被披露的此類漏洞還有很多,這裡簡單羅列一些:

l Apache HTTP/2緩衝區溢位漏洞(CVE-2020-11984)

l SWFTools堆緩衝區溢位漏洞(CNVD-2021-73189)

l Tuxera NTFS-3G緩衝區溢位漏洞(CNVD-2021-72267)

l IBM Tivoli Workload Scheduler緩衝區溢位漏洞

l Apache Portable Runtime緩衝區溢位漏洞

l libsolv緩衝區溢位漏洞

l Google Chrome緩衝區溢位漏洞

l D-Link DAP-2020堆疊緩衝區溢位漏洞

l Google TensorFlow緩衝區溢位漏洞(CNVD-2021-64528)

l Adobe Bridge緩衝區溢位漏洞

l fig2dev棧緩衝區溢位漏洞(CNVD-2021-68460)

l FFmpeg緩衝區溢位漏洞(CNVD-2021-73206)

最後,簡單的總結一下本文的內容。本文主要透過兩個函式的呼叫,向大家介紹了緩衝區溢位漏洞的原理。不難發現,如若該主調函式返回值(地址),透過溢位方式覆寫成對應著攻擊程式碼入口、軟體認證繞過區域程式碼地址等,將可完成系統攻擊、軟體破解。

標簽: 緩衝區  溢位  漏洞  函式  主調