任意代码执行

任意代码执行(简称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).