什么是远程代码执行攻击?
RCE 攻击包括通过使用系统某个级别的漏洞在系统中注入和执行恶意代码。这允许攻击者在系统中执行命令、窃取、损坏、加密数据等。
RCE 攻击有多危险?
RCE 攻击的影响可能很大,具体取决于它所利用的漏洞。至少,成功的远程代码执行将授予对系统及其数据的访问权限。,严重的情况下,它可能导致整个系统妥协和接管。
RCE含义
RCE 也称为远程代码评估,是更广泛的任意代码执行 (ACE) 攻击组的一部分。它是一种使用互联网、本地 (LAN) 或广域网 (WAN) 在目标机器或系统中远程注入和执行代码的方法。此代码可以访问 Web 服务器或应用程序,完全控制或破坏它,打开后门,获取、修改或破坏数据,安装勒索软件等。
这种攻击利用了将可执行代码注入字符串或文件并执行或评估的可能性。可能是由于用户输入没有经过验证,也没有被允许通过编程语言的解析器——这种情况通常不是开发人员想要的。注入的代码通常使用目标应用程序的编程语言。此类语言可能包括 PHP、Java、Python、Ruby 等。
根据攻击者所利用的缺陷,他们通常会在执行代码时获得目标进程授予的权限。例如,如果攻击者以用户的身份注入代码,他们就会夺取用户的权限。
出于这个原因,RCE 之后经常尝试升级权限并获得对管理或根级别的控制。不幸的是,这种提升的特权也允许攻击者更巧妙地隐藏攻击。然而,即使没有更多的特殊权限,远程代码执行漏洞也有可能造成严重危害。
RCE 攻击的影响
远程代码执行攻击的影响可能是简单地获得对应用程序的访问权,也可能是完全接管应用程序。RCE攻击的一些主要结果类型包括:
访问应用程序或服务器:最初,由于漏洞,攻击者可以访问易受攻击的应用程序中的功能。他们可以使用它来注入和运行底层的 Web 服务器命令。
权限升级:获得对网络服务器的访问权并执行命令意味着攻击者可能能够获得更大的权限并控制服务器。如果存在服务器级别的内部漏洞,这尤其危险。
访问数据:利用 RCE 漏洞,攻击者可以访问和窃取存储在服务器上的数据。
拒绝服务:攻击者可以通过执行特定的命令来中断和崩溃服务器上的整个服务和其他服务。
勒索软件和加密:如果可以在服务器上执行代码,也可以安装各种类型的恶意软件。此类恶意软件可能是使用服务器资源挖掘加密货币的加密挖掘或加密劫持软件。远程代码执行漏洞也为勒索软件打开了大门,让整个服务器被接管。
这些只是 RCE 攻击的一些可能影响。根据具体情况和其他漏洞的存在,敌对方可能会造成进一步的损害,使这种攻击非常危险。
远程代码执行如何工作
执行远程代码执行有不同的方法,因为它可以针对服务器的不同层。
执行 RCE 的一种常见方法是通过注入代码并获得对指令指针的控制权。这允许攻击者指向执行以下指令/过程。代码可以以不同的方式和位置注入,但攻击者必须“指向”注入的代码才能执行。代码本身可能以命令、脚本或其他形式存在。
从本质上讲,以上就是RCE攻击的执行方式。攻击的类型、攻击向量以及执行的精确程度可能有所不同。
远程代码执行攻击类型
这些是最常见的远程代码执行攻击及其基本场景。
类型混淆
这种类型的漏洞是指使用一种类型分配对象、资源或变量,但随后使用不同于初始类型的另一种类型进行访问。由于访问资源的类型和属性不匹配,这将导致错误和逻辑错误。
攻击者利用这个漏洞,将代码包含在分配一个指针但读取另一个指针的对象中。结果是第二个指针触发注入的代码。
例如,在某些情况下, SQL 注入可能是由于类型混淆造成的。
反序列化
Тo 通过网络传输数据,它被序列化,也就是转换为二进制。然后,将其反序列化并转换回要在其目的地使用的对象。
通过以特定方式格式化用户输入,攻击者可以创建一个对象,一旦它被反序列化,就会变成可执行的动态代码。
缓冲区溢出和缓冲区过度读取
缓冲区溢出也称为越界写入和缓冲区溢出。与缓冲区过度读取一起,它指的是与称为缓冲区的内存分区相关的内存安全漏洞。缓冲区的目的是在数据从一个地方移动到另一个地方时临时存储数据。
应用程序经常使用缓冲存储器来存储数据,包括用户提供的数据。对于缓冲区溢出,攻击者将依赖于有缺陷的内存分配,例如,缺乏边界检查措施。这可能导致数据被写入缓冲区边界之外并覆盖相邻缓冲区分区中的内存。
这种覆盖可能会损坏或破坏重要数据,导致崩溃,或导致通过使用指令指针安全漏洞触发 RCE。这可能与缓冲区过度读取情况有关,在这种场景中,数据的读取超出了缓冲区的边界,进入了存储在相邻分区中的内存。
RCE 攻击示例
一些重要和危险的漏洞及其启用的攻击都涉及使用 RCE。
Log4J RCE 漏洞
Log4Shell (CVE-2021-44228) 是 Log4j 中的一个远程代码执行漏洞,Log4j是一种流行的 Java 日志框架,估计会影响全球数百万台设备。它被称为“有史以来最大、最严重的漏洞”。虽然它自 2013 年以来就存在,但它于 2021 年 11 月为人所知,并于当年 12 月公开披露。
该漏洞允许用户在服务器上执行任意Java代码,为加密挖掘、创建僵尸网络和注入勒索软件打开大门。
WannaCry
WannaCry是一种勒索病毒加密蠕虫攻击,它使用了一个名为EternalBlue的RCE漏洞,从而可以部署DoublePulsar工具来安装和执行自己的程序。这次攻击的目标是微软的Windows系统。安装后,蠕虫会对数据进行加密,攻击者会索要赎金。
永恒之蓝攻击了微软SMB (Server Message Block)协议中的一个安全漏洞。该漏洞允许攻击者注入和远程执行代码。
这只是两个最著名的RCE漏洞及其启用的攻击。常见漏洞和暴露(Common vulnerability and exposed, CVE)系统定期列出可能导致RCE攻击的漏洞的新条目。
如何检测和防止远程代码执行
RCE 攻击构成严重威胁,因为它们可能涉及多种方法并利用许多不同的漏洞。此外,新的漏洞不断出现,使得准备充分变得具有挑战性。但是,您可以采取多种措施来检测和防止 RCE 攻击。
定期安全更新
组织经常不能根据最新的威胁情报采取行动,不能及时应用补丁和更新。因此,攻击者通常也会试图攻击旧的漏洞。一旦系统和软件可用,就立即对它们进行安全更新,这对于阻止许多攻击者是非常有效的。
监控
监控网络流量和端点,以发现可疑内容并阻止利用企图。这可以通过实现某种形式的网络安全解决方案或威胁检测软件来实现。
检测软件安全
通过静态代码检测可以在编码阶段发现常见的安全漏洞,从源头解决掉存在的安全风险。
内存管理
实现缓冲区溢出保护和其他形式的内存管理,以避免产生容易被利用的漏洞。例如,当缓冲区溢出时,这种保护将终止程序的执行,从而有效地禁用了执行恶意代码的可能性。边界检查和标记是可以实现的其他保护技术,用于停止缓冲区溢出。
文章来源: