任意程式碼執行

任意程式碼執行(簡稱ACE)是指攻擊者能夠讓目標電腦或目標行程中執行任意命令或程式碼[1]。如果系統有地方可以被駭客利用以執行任意程式碼,則此處被稱為任意程式碼執行漏洞。特別設計利用此一漏洞的程式,稱為任意程式碼執行漏洞利用。可以通過網路(尤其是通過網際網路等廣域網路)讓目標電腦(遠程電腦)執行任意程式碼的能力稱為遠端程式碼執行(RCE)。

漏洞類型

有許多類型的漏洞可能導致攻擊者能夠執行任意命令或程式碼。例如:

方法實現

任意程式碼執行通常是通過控制正在執行的行程的指令指標(例如跳轉或分支)來實現的。指令和指標通常指向行程中將要執行的下一條指令。因此,對指令指標值的控制可以控制接下來執行哪條指令。為了執行任意程式碼,許多漏洞將程式碼注入到行程中(例如通過向行程傳送輸入,該輸入儲存在RAM中的輸入緩衝區中)並使用漏洞更改指令指標以使其指向注入的程式碼,然後注入的程式碼將自動執行。這種類型的攻擊利用了大多數電腦(使用馮諾·依曼架構)沒有對程式碼和資料進行一般區分的事實,因此可以將惡意程式碼偽裝成無害的輸入資料。許多較新的 CPU 具有NX Bit機制,使任意執行程式碼更難。

權限提升

就其本身而言,任意程式碼執行漏洞可賦予攻擊者與易受攻擊的目標行程相同的權限[5]例如,如果利用網路瀏覽器中的漏洞,攻擊者可以充當使用者,執行修改個人電腦檔案或訪問銀行資訊等操作,但無法執行系統級操作(除非有問題的使用者也有該存取權限)。

為了解決這個問題,一旦攻擊者可以在目標上執行任意程式碼,通常會嘗試進行權限提升漏洞利用以獲得額外的控制權。這可能涉及核心本身或管理員、SYSTEM 或 root 帳戶。無論有沒有這種增強的控制,漏洞利用都有可能造成嚴重的破壞或將電腦變成殭屍——但權限提升有助於隱藏系統合法管理員的攻擊。

參見

參考文獻

  1. ^ Team, KernelCare. Remote code execution attack: what it is, how to protect your systems. TuxCare. 2021-01-25 [2022-07-26]. (原始內容存檔於2022-11-12) (美國英語). 
  2. ^ Deserialization of untrusted data | OWASP Foundation. owasp.org. [2022-07-26]. (原始內容存檔於2022-11-29) (英語). 
  3. ^ Understanding type confusion vulnerabilities: CVE-2015-0336. Microsoft Security Blog. 2015-06-18 [2022-07-26]. (原始內容存檔於2022-10-02) (美國英語). 
  4. ^ ldd arbitrary code execution. catonmat.net. [2022-07-26]. (原始內容存檔於2022-09-06) (英語). 
  5. ^ Remote Code Execution - an overview | ScienceDirect Topics. www.sciencedirect.com. [2022-07-26]. (原始內容存檔於2022-11-25).