什么是远程代码执行 (RCE)?
远程代码执行 (RCE) 是利用安全漏洞并将其连接到私有或公共网络,在远程系统上运行任意代码。不需要物理访问。RCE 可能导致恶意软件、数据丢失、服务中断和勒索软件部署等严重后果。攻击者在没有访问受害者系统的情况下即可利用 RCE 漏洞。当我们下载恶意软件或应用程序时,就会导致网络攻击者利用 RCE。OWASP 已将远程过程代码识别为网络攻击的漏洞。
概述
定义
远程代码执行是对计算机进行的远程攻击,通过执行恶意代码来实现。远程代码执行是任意的。它会寻找目标系统软件或应用程序的漏洞或安全缺陷。
RCE 的影响
攻击者利用网络的 RCE 漏洞进行初始访问,以运行命令来安装恶意软件或实现其他目标。
使用直接命令或恶意软件暴露来自易受攻击设备的敏感数据。
通过运行攻击者的代码来中断应用程序或系统的操作。这种类型的攻击也称为拒绝服务攻击。
勒索软件是一种用于部署在用户身上的恶意软件,在支付赎金之前拒绝用户访问计算机文件。RCE 漏洞为攻击者提供了访问权限,使其成为最关键的漏洞类型。
另一种类型可以是加密货币挖矿,通过破坏计算资源来获取经济利益来挖取加密货币。
以这种方式,可以使用 RCE 漏洞对受损设备进行各种危险的攻击。勒索软件是网络攻击中最危险的一种。
远程代码执行的技术
主要有两种类型用于执行 RCE,如下所示:
远程代码评估
当用户允许使用可能包含恶意代码的用户名时,攻击者可以攻击应用程序。攻击者利用恶意编程语言影响输入评估。因此,代码评估来自用户输入。
存储代码评估
与远程代码评估的区别在于它利用解释器文件解析而不是编程语言函数。验证适当的文件和网站存在上传功能的缺陷。
例如 - 每个用户在配置文件中存储特定的语言变量设置。攻击者通过修改语言参数并将代码注入配置文件来执行任意命令。
实现 RCE 的不同方法
通过注入攻击进行攻击
SQL 查询是任何网站或应用程序中用户输入的命令。由于 SQL 查询用作命令并获取输入以设计在易受攻击的系统上运行的攻击,因此可以使用任意代码。
通过反序列化进行攻击
使用序列化将多个数据片段组合到单个字符串中以进行通信。反序列化程序通过格式化来自用户的输入来解释序列化数据。
越界写入
数据存储在固定的块中,攻击者攻击执行代码,即恶意代码,以在缓冲区外部写入以获取输入。内存分配具有攻击者利用的漏洞。
RCE 示例
WannaCry 是 RCE 的一个流行示例,它是一种影响全球数千台计算机的勒索软件。服务器使用 DoublePulsar 或 EternalBlue 感染,安装 WannaCry 勒索软件并感染客户端计算机,影响数千台计算机。
RCE 攻击检测和缓解
清理用户输入
在允许应用程序使用用户输入之前,防止各种攻击进行验证和清理用户提供的输入。反序列化和注入漏洞用于 RCE 攻击。例如:SQL 注入。
内存管理安全
缓冲区溢出是攻击者用来利用的关键漏洞。应定期运行漏洞扫描以检测此类错误。
流量检查
通过操纵网络流量并利用漏洞注入代码来攻击合作系统。Web 应用防火墙有效地防止恶意威胁,因为它监控和保护网络流量的端点。
访问控制
网络分段、访问管理和零信任策略等是可帮助保护攻击者获得首次访问权限的一些控制措施。RCE 漏洞提供了扩展访问权限,并且通过在企业目标网络中立足点部署了更多危险的攻击。需要通过访问控制列表限制用户权限。
防止 RCE 的预防措施
应清理大量数据。
使用安全措施来保护 Web 或文件上传。
任何用户输入都传递到回调或评估函数中。
特殊字符或函数应列入黑名单。
Snort 可以检测可疑流量并检测入侵。
缓冲区溢出保护可以防止 RCE 攻击,从而不会快速访问漏洞。
结论
访问受保护的数据、提升权限或获取未经授权的访问权限会导致多起攻击。应用程序和网络中的这些缺陷需要得到保护。通过在使用系统或应用程序时实施安全措施,可以防止 RCE 漏洞。