任意代码执行(英語:Arbitrary code execution,简称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). 

📚 Artikel Terkait di Wikipedia

7-Zip

vulnerable^WEVIL (case 14): Rapid7's ScanNowUPnP.exe allows arbitrary (remote) code execution. SecLists.org. 22 December 2015 [2025-01-26]. (原始内容存档于2025-01-26)

ACE

(电子计算机)。 Pilot ACE,ACE的一个实现,詹姆斯·哈迪·威尔金森负责制造。 ACE (文件格式) 远程代码执行(Arbitrary code execution) 游戏安全专家(Anti-Cheat Expert),反作弊软件。̆ ACE自适配通信环境(Adaptive Communication

高级着色器语言

(页面存档备份,存于互联网档案馆) Shader Model Comparison at Beyond3D (页面存档备份,存于互联网档案馆) Riemer's HLSL Introduction & Tutorial with lots of sample code (页面存档备份,存于互联网档案馆)

LISP

This is computationally complete. McCarthy (1960, Sect. 6) showed an arbitrary flowchart can be coded as mutually recursive functions. The M-language

J语言

from scalars, which are dimensionless, to multi-dimensional arrays of arbitrary rank and size.  Bob Smith. Nested arrays, operators, and functions. 1981

续体

declaring expressions. …… Nevertheless, there is a method for transforming an arbitrary program into one which meets our apparently restrictive condition. ……

奥萨马·本·拉登之死

Rapporteur)馬丁·施恩寧(Martin Scheinin)與主要關注司法外殺戮、草率處決(Summary execution)或任意處決(Arbitrary execution)案例的特別報告員(Special Rapporteur)克里斯妥·海恩斯(Christof

比較C♯和Java

2 Execution of try-catch-finally. [2009-05-01]. (原始内容存档于2009-03-10).  Contrasting C# and Java Syntax (页面存档备份,存于互联网档案馆) Java vs. C# - Code for Code Comparison