What is a Buffer Overflow?

在電腦程式中,變量會以固定大小的記憶體區塊配置。 配置此記憶體後,程式可以從這些位置儲存和擷取資料。 當寫入其中一個記憶體區塊的資料量超過其大小時,就會發生緩衝區溢位。 因此,用於其他目的分配的內存被覆寫,這可能會對程序產生各種影響。

Download the eBook 申請示範

What is a Buffer Overflow?

緩衝區溢位攻擊

緩衝區溢位攻擊是一種常見的網路攻擊,它故意利用緩衝區溢位漏洞,將使用者控制的資料寫入記憶體。透過提交多於配置記憶體區塊中容納的資料,攻擊者可覆寫記憶體其他部分中的資料。

攻擊者可以由於各種原因執行緩衝區溢位攻擊,例如覆寫重要程式碼或資料以損毀程式、注入惡意程式碼以執行至程式,或修改關鍵值、變更程式的執行流程。

緩衝區溢位威脅

緩衝區溢位攻擊可用於實現各種目標,包括:

  • Denial of Service (DoS) Attacks應用程式的記憶體空間包含對程式執行能力至關重要的指標、程式碼和其他資料片段。覆寫這些資料可能會導致程式崩潰,進而導致 DoS 攻擊。
  • 程式碼執行:緩衝區溢位利用的一個常見目標是迫使易受攻擊的應用程式執行攻擊者提供的程式碼。這使得攻擊者可以使用與被利用的應用程式相同的存取權限和權限在受影響的系統上執行程式碼。
  • 存取控制繞過:惡意利用緩衝區溢位來執行程式碼,可提升攻擊者對目標系統的存取權。 然後,這個擴展存取權可用於執行後續攻擊。

緩衝區溢位攻擊的類型

緩衝區溢位攻擊可以通過幾種不同的方式執行,但一些最常見的範例包括:

  • 基於堆疊的緩衝區溢位:程式堆疊包含應用程式的關鍵控制流程資料(例如函數傳回指標),並且是緩衝區溢位攻擊的常見目標。覆蓋返回指標可能會導致程式跳到攻擊者控制的資料並將其作為程式碼執行,從而允許攻擊者以與應用程式相同的權限運行程式碼。
  • 堆積型緩衝區溢位:程式堆積用於動態分配記憶體給程式編譯時未定義大小的變數。 透過利用緩衝區溢位和淹沒系統堆,攻擊者可以覆蓋關鍵應用程式資料。
  • 格式字符串攻擊:C/C ++ 中 printf 系列中的函數可以使用格式字符串,允許讀取和寫入內存。 如果使用者提供的資料被解釋為格式字串,則可以用來洩漏或修改敏感值。

緩衝區溢位攻擊範例

緩衝區溢位在 C/C++ 中很常見,當程式分配固定大小的記憶體區塊然後不安全地將資料複製到其中時,就會發生緩衝區溢位。以下程式碼範例包含緩衝區溢位脆弱性:

字符增益 [補丁尺寸];

獲得(增益);

在此代碼範例中,變量 buf 的固定大小為 BUFSIZE。 但是,gets 函數將讀取數據並將其存儲在 buf 中,直到達到空終止符(0x00)為止。 攻擊者可惡意利用此弱點,覆寫 bu f 結束後的資料。

格式字串攻擊是緩衝區溢位的特殊情況。 以下程式碼範例包含格式字串脆弱性。

#include<stdio.h>空白主要(內含字元,字符 ** argv)

{

 打印 TF(阿爾吉夫 [1]);

}

在此範例中,程序從 argv [1] 接收用戶提供的輸入並將其打印到終端。 但是,如果使用者的輸入包含格式字串,攻擊者可以讀取或編輯系統上的記憶體。

如何防止緩衝區溢位

可以透過以下方式防止緩衝區溢位脆弱性:

  • 執行輸入驗證:當程式對使用者提供的輸入進行假設而不驗證這些假設時,就會發生緩衝區溢位。檢查資料的長度或僅將特定數量的位元組複製到記憶體位置可以有助於避免緩衝區溢位。
  • 啟用執行階段記憶體保護:大多數電腦都有內建防護,防止緩衝區溢位,例如位址空間配置隨機化 (ASLR)、資料執行防護 (DEP) 和結構化異常處理覆寫防護。 啟用這些防護會使緩衝區溢位攻擊變得更難執行。
  • 避免受攻擊的函數:緩衝區溢位是由於 C/C ++ 中的 gets、scanf 和 strcpy 等易受攻擊的函數可能實現。 透過正確使用這些函數的安全版本可以避免緩衝區溢位。
  • 使用記憶體安全語言:在具有固定大小變量且沒有記憶體保護的程式語言中,會發生緩衝區溢位。 使用其他編程語言,例如 Python,Java 或 C#,使緩衝區溢位變得困難或不可能。
  • 防止脆弱性利用: 網路應用程式防火牆(WAF) 以及網路應用程式和應用程式開發介面保護(WAAP) 解決方案可以識別並阻止企圖利用緩衝區溢位漏洞。這降低了緩衝區溢位攻擊對企業應用程式安全(AppSec) 造成的風險。

使用 CloudGuard AppSec 進行緩衝區溢位保護

緩衝區溢位漏洞的利用可能會導致程式崩潰、資料外洩或在組織的系統上執行惡意程式碼。在CloudGuard AppSec 此電子書 中了解 如何幫助防範緩衝區溢位攻擊和其他威脅。然後,註冊免費演示,親自了解 CloudGuard AppSec 如何提高雲端應用程式的安全性。

×
  反映意見
由於 Cookie 有其功能且可供我們用於資料分析和行銷等相關業務,本網站是有使用 Cookie 的。繼續瀏覽本網站即表示您同意我們使用 Cookie。若欲了解更多相關資訊,請參閱我們的 Cookie 聲明