应用防护RASP介绍

发布时间:2025-01-07 17:43

介绍家庭背景但要注意隐私保护 #生活常识# #社交技巧# #自我介绍#

应用防护功能基于RASP(Runtime Application Self-Protection)技术,通过在应用运行时检测攻击并进行应用保护,为应用提供安全防御。您无需修改代码,只需在主机或容器环境的应用中部署RASP探针,即可为应用提供强大的安全防护能力,并抵御绝大部分未知漏洞所使用的攻击手法。

功能原理

应用防护使用RASP技术,在应用程序内部通过钩子(Hook)关键函数,实时监测应用在运行时与其他系统的交互过程。当应用出现可疑行为时,应用防护会根据当前上下文环境识别并阻断攻击,有效地为您主机上的Web业务进程提供应用漏洞、0day漏洞和内存马攻击等防护能力。

应用场景和优势

保障应用内部安全:不关注流量来源,只关注应用行为,可防御南北向+东西向的威胁;伴随应用启动而运行,作为应用资产最后一道防线实现应用默认安全。

轻松应对花式编码和多种加密流量:RASP能够看到应用的上下文,不管请求怎么变形,最终应用执行的动作保持不变,只要身份和行为不匹配,就可以检测到异常;相对于网络边界设备无法审计加密流量的问题,RASP可以从应用程序内部获取完整解密后的请求数据。

低误报漏报可防御0day漏洞:RASP是从应用内部对关键函数操作的数据进行分析,可忽略无法真实执行的攻击,减少大量的误报和漏报;针对0day漏洞,无论攻击入口如何变化、攻击手段如何隐蔽,都无法绕开最终关键函数的执行过程,因此RASP可以有效拦截。

攻击溯源漏洞定位修复:RASP还能为安全人员和开发人员提供详尽的攻击链路,包括攻击原始Payload、代码调用堆栈等信息,方便他们进行漏洞定位、复现以及修复。

运维成本低:部署简单,只需在控制台接入,无需维护和更新具体规则。

使用限制

仅支持防护Java和PHP应用。支持在安装了云安全中心客户端的阿里云服务器、第三方厂商云服务器和线下IDC服务器中使用。支持的操作系统如下:

作系统类型

支持的操作系统

Windows(64位)

Windows Server 2022

Windows Server 2019

Windows Server 2016

Windows Server 2012

Windows Server 2008

Windows 11

Windows 10

Linux(64位)

Alibaba Cloud Linux

AlmaLinux

Anolis OS

CentOS 6、7、8

CentOS Stream

Debian 8及以上版本

Gentoo

OpenSUSE

RHEL 6、7、8、9

Rocky Linux

SUSE Linux Enterprise Server

Ubuntu 14.04及以上版本

中标麒麟 V7、银河麒麟V10

TencentOS

Oracle Linux 7、8、9

openEuler 20.03、22.03

EulerOS

Amazon Linux 2、2023

支持的能力

攻击检测(Java应用)

下表介绍应用防护可检测并拦截的攻击类型及相关防护建议。

攻击类型

说明

防护建议

JNI注入

JNI注入是一种通用的RASP(Runtime Application Self-Protection)绕过手段。当攻击者拿到代码执行权限后,可以通过Java Native函数去调用外部的恶意动态链接库,从而绕过Java层的安全防护,并隐匿具体的恶意行为。

您的服务器可能存在代码执行漏洞,请检查漏洞的位置并限制执行代码的功能。

SQL注入

SQL注入手段通过把SQL命令插入到页面请求或Web表单的查询字符串中,以达到欺骗服务器执行指定SQL语句的目的。它可以通过在Web表单中输入SQL语句,得到存在安全漏洞的网站上的数据。

SQL注入是由拼接SQL语句引起的。请尽可能使用预编译来处理传入的参数,或通过白名单和黑名单来限制参数的拼接。

XXE

指XML外部实体注入漏洞(XML External Entity Injection)。当XML文件在引用外部实体时,通过构造恶意内容,可以导致任意文件读取,命令执行和内网攻击等不良后果。

请检查应用程序在解析XML时是否需要加载外部实体。如果不需要,请在XML解析配置中禁用外部实体。

恶意DNS查询

恶意DNS查询存在多种利用方式。攻击者极有可能通过DNS协议来突破内网的网络限制,从而将敏感信息带出内网,也可能通过DNS协议去探测内网系统是否存在SSRF、JNDI注入等漏洞。

恶意DNS查询是由服务器向用户控制的参数发送请求所引起的。请检查参数并通过白名单进行限制。

恶意反射调用

RASP自保护模块,禁止攻击者通过反射的方式去修改运行时RASP的相关数据。

您的服务器可能存在代码执行漏洞。请检查漏洞的位置并限制执行代码的功能。

恶意外连

SSRF(Server-side request forgery)服务器端请求伪造漏洞指的是攻击者通过构造由服务端发起的请求,对网站内部系统进行攻击。

修复SSRF漏洞需要限制服务器请求的目标地址范围,通过白名单机制只允许访问安全的内部资源,并禁用不必要的外部网络访问。

恶意文件读写

Java提供RandomAccessFile,用于文件读写操作。当使用该Class进行文件读写的时候,如果未对文件路径、文件内容进行限制,攻击者可能读取到系统敏感文件,也可能上传木马文件。

请检查文件读取和上传是否正常。如果出现异常,请检查函数代码,并通过黑名单进行限制。

恶意文件上传

对于网站提供的文件上传功能,如果未对上传文件的类型进行限制,攻击者可能通过上传木马文件来获取服务器的更大权限,从而造成严重危害。

请限制上传文件的类型,禁止上传具有执行权限的文件,如JSP。

命令执行

命令执行漏洞是指服务器没有对执行的命令进行过滤,用户可以随意执行系统命令。

通常远程命令执行是由Web Shell或服务器的危险代码引起的。请检查命令执行的位置。如果是Web Shell,请及时删除。如果是服务器的正常功能,则可以通过白名单限制执行的命令。

目录遍历

网站自身的配置缺陷可能会使得网站目录被任意浏览,导致隐私信息泄露。攻击者可以利用该信息对网站进行攻击。

请检查目录遍历操作是否正常。如果异常,请检查函数的代码,并通过黑名单对相关命令(如“./”和“../”)进行限制。

内存马注入

内存马是一种新兴的木马技术,攻击者通过一些特殊的技术手段将木马注入到内存中,可以有效绕过WAF和主机防御的检测。

您的服务器可能存在代码执行漏洞。请检查漏洞的位置并限制执行代码的功能。

任意文件读取

对于网站提供的文件下载和读取功能,如果是直接通过绝对路径或目录穿越符对文件进行读取和下载,没有相关文件路径的限制,那么攻击者就可以利用这种方式获取敏感信息,并对服务器进行攻击。

请检查文件读取操作是否正常。如果异常,请检查函数的代码,并使用黑名单对传入参数(如“./”和“../”)进行限制。

线程注入

线程注入是一种通用的RASP绕过手段。当攻击者获得代码执行权限后,可以通过新建线程的方式使RASP丢失运行环境的上下文,从而影响RASP的防御能力。

您的服务器可能存在代码执行漏洞。请检查漏洞的位置并限制执行代码的功能。

恶意Attach

Attach API是Java提供的动态修改字节码技术,该功能可以实现动态修改运行时应用的字节码。很多攻击者通过该手法进行Agent型内存马的注入,具有较高的欺骗性。

您的服务器可能存在代码执行漏洞。请检查漏洞的位置并限制执行代码的功能。

JNDI注入

当应用进行JNDI查询的时候,若查询的URL可以由攻击者控制,则攻击者可以使用服务器去查询恶意的链接,使得服务器加载一些恶意Class类,实现任意代码执行。

若该漏洞源于第三方组件,请及时进行组件版本升级。

若为自写JNDI查询代码,请对查询的URL进行限制,禁止一些危险协议的查询。

危险协议使用

若服务端进行访问的URL用户端可控,而应用本身又未对该URL的协议进行限制,那么攻击者可能通过file、netdoc等危险协议对服务器上的敏感文件进行读取。

请对URL可以访问的协议进行限制。

反序列化攻击

Java反序列是指把字符序列恢复为Java对象的过程,在对象生成过程中,若该对象包含一些危险度较高的代码,则攻击者可能通过控制生成对象的成员变量在对象进行反序列化的时候实现一些恶意攻击。

及时升级存在漏洞的组件版本。

若官方还未提供漏洞修复的组件版本,请暂时关闭该功能。

任意文件删除

对于网站提供的文件删除功能,文件删除的接口如果没有对文件路径进行限制,攻击者就可以通过绝对路径或目录穿越符对任意文件进行删除操作,从而对服务器进行攻击。

请检查文件删除操作是否正常。如果异常,请检查函数的代码,并使用黑名单对传入参数(如“./”和“../”)进行限制。

表达式注入

表达式组件提供了十分丰富的功能,支持在运行时查询和处理数据等,但很多表达式组件也提供了函数调用等权限较高的功能,如果未对这些功能做限制,而攻击者又能够控制表达式执行的内容,那么攻击者将很有可能通过表达式执行任意代码。

请对进入表达式的内容进行严格限制,禁止大部分Java函数的调用。若是第三方组件漏洞导致,请及时升级组件版本。

引擎注入

Java提供了较多的第三方引擎组件(如Rhino、Nashorn等JS引擎,Velocity、FreeMarker等模板引擎),这些引擎通常提供了函数调用等权限较高的功能,如果对这些功能未作限制,而攻击者又能够控制引擎执行的内容,那么攻击者将很有可能通过引擎执行任意代码。

请对进入引擎文件的内容进行严格限制,禁止大部分Java函数的调用。若是第三方组件漏洞导致,请及时升级组件版本。

恶意Beans绑定

Java存在一些框架支持对应用运行时Beans的参数绑定,如果未对绑定Beans的类型进行限制,攻击者就可以通过对一些敏感Beans值的修改,破坏应用的运行,甚至造成执行任意代码。

请对可以绑定的Beans的类型进行限制,禁止对类似于Class、Classloader类型的Beans值进行修改。若是第三方组件漏洞导致,请及时升级组件版本。

恶意类加载

现阶段,很多0day、WebShell的利用均依赖于恶意类的加载,一旦恶意类加载成功,攻击者便可以通过恶意类的初始化来取得代码执行权限,从而进行一系列的恶意操作。

若恶意类的加载是通过WebShell控制,请及时删除WebShell。

如果恶意类的加载是框架导致,请及时升级框架版本。

JSTL任意文件包含

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。当用户可控参数被直接拼接到JSTL标签中而未对该参数进行任何限制的情况下,攻击者可以构造特殊的攻击脚本造成任意文件读取、SSRF攻击。

尽可能不要将用户可控参数直接拼接到JSTL标签上,如果必须这样做,请对该参数的内容进行严格的白名单控制。

攻击检测(PHP应用)

攻击类型

说明

防护建议

恶意文件包含

PHP中的文件包含漏洞是一种常见的安全漏洞,它允许攻击者通过操纵输入来包含和执行任意文件。这种漏洞通常发生在使用include()、require()、include_once()和require_once()函数时,这些函数用于在脚本中包含其他文件。

建议验证和限制用户输入的文件路径,仅允许包含应用程序目录中的预定义文件,以防止攻击者插入恶意路径。

恶意外连

SSRF(Server-side request forgery)服务器端请求伪造漏洞指的是攻击者通过构造由服务端发起的请求,对网站内部系统进行攻击。

修复SSRF漏洞需要限制服务器请求的目标地址范围,通过白名单机制只允许访问安全的内部资源,并禁用不必要的外部网络访问。

反序列化

PHP中的反序列化漏洞是一种严重的安全问题,它允许攻击者通过操纵序列化数据来执行任意函数,这种漏洞通常发生在使用unserialize()函数时。

避免直接反序列化不可信数据,使用json_decode()或其他安全的替代方法,或者在必要时严格验证和过滤反序列化的数据来源。

回调函数执行

回调函数是指PHP中的array_map()、array_filter()等函数,当它的参数外部可控,潜在的攻击者就拥有了执行任意函数,乃至控制整个系统的能力。

为防止PHP中的回调函数被滥用,确保传递给array_map()、array_filter()等函数的回调函数名不受用户输入控制,并且所有允许使用的回调函数都应当通过白名单机制进行验证。

恶意文件读写

当调用文件读写函数的时候,如果未对文件路径、文件内容进行限制,攻击者可能读取到系统敏感文件,也可能上传木马文件。

为防止文件读写相关的安全漏洞,严格验证和限制文件路径,只允许访问预定义的目录,并对文件内容进行安全性检查以防止恶意代码上传。

任意代码执行

任意代码执行漏洞是一种严重的安全漏洞,攻击者可以通过这一漏洞在服务器上执行任意的代码片段,从而获取服务器的控制权限或读取、修改敏感数据。这种漏洞通常源于程序未对用户输入进行充分验证,导致攻击者能够注入恶意代码。如果攻击者成功利用此漏洞,可能导致数据泄露、网站被篡改或植入恶意软件等。

建议使用严格的输入验证和输出编码,避免使用eval()、include()等函数直接处理用户输入,并保持所有库和框架的安全更新。

任意文件读取

如果没有对文件读取接口进行过滤和限制,攻击者就可以利用绝对路径或目录穿越符对文件进行读取和下载,从而获取敏感信息,对服务器进行攻击。

对文件读取接口实施严格的输入验证和路径限制,确保仅允许访问经过白名单验证的文件,并使用黑名单对传入参数(如“./”和“../”)进行限制。

任意文件删除

文件删除的接口如果没有相关文件路径的限制,攻击者就可以通过绝对路径或目录穿越符对文件进行任意删除,对服务器进行攻击。

对文件删除接口实施严格的输入验证和路径限制,确保仅允许删除经过验证的文件,并使用黑名单对传入参数(如“./”和“../”)进行限制。

命令执行

命令执行漏洞可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

对所有用户输入进行严格的验证和过滤,避免直接使用未经处理的输入构建操作系统命令,并尽可能使用安全的API替代系统命令执行。

目录遍历

网站自身的配置缺陷可能会使得网站目录被任意浏览,导致隐私信息泄露。攻击者可以利用该信息对网站进行攻击。

通过配置适当的服务器权限设置和使用.htaccess等文件限制目录访问,确保敏感目录不可被未经授权的用户浏览。

恶意文件上传

文件上传功能如果未对上传文件的类型进行限制,攻击者可能通过上传木马文件来获取服务器的更大权限,从而造成严重危害。

对上传文件的类型进行严格限制和验证,只允许安全的文件类型,禁止上传具有执行权限的文件后缀,如php等,并在服务器端重新检查文件内容以确保其安全。

应用漏洞防御

应用防护功能可以有效防御应用漏洞、0day漏洞和内存马等攻击行为。在应用漏洞应急响应过程中,借助RASP的攻击防护能力,可以快速阻断攻击,为修复应用漏洞争取更多时间。应用防护功能还可以协助您快速定位风险来源与影响范围。关于应用漏洞的更多信息,请参见查看和处理漏洞。

如果您暂时无法修复应用漏洞,可先将应用进程接入RASP进行防护。您可以参考下述操作步骤为检测出应用漏洞的应用添加RASP防护。

登录云安全中心控制台。在控制台左上角,选择需防护资产所在的区域:中国或全球(不含中国)。

在左侧导航栏,选择。

在应用漏洞页签,存在RASP支持实时防护标签的漏洞为应用防护支持防护的漏洞,单击对应漏洞操作列的立即防护。

image.png

在应用防护接入面板,应用分组名称的下拉列表中选择需资产需接入的应用分组,并选择对应资产,然后单击确定。

如果不存在所需的应用分组,您可以在下拉列表中单击新建应用分组,输入应用分组名称,并单击确定,实现快速创建应用分组。此处创建的应用分组的防护模式为防护,防护策略组为日常运行组。

image.png

检测出漏洞的应用接入应用防护后,只有在应用漏洞完成了一次漏洞扫描时,在漏洞详情页的待处理漏洞列表中该服务器的操作列才会显示为已防护。

应用行为分析

应用分析功能通过对接入的应用程序进行实时监测、收集和分析应用程序的行为数据,并生成报告和可视化展示,可以帮助您了解应用的攻防详情,进行系统安全加固。更多信息,请参见应用行为分析。

内存马防御

应用防护的RASP技术通过分析内存数据可以实时检测内存马,并支持对内存马注入和内存马执行过程进行拦截。更多信息,请参见内存马防御。

弱点检测

下表介绍应用防护可检测的应用弱点类型及相关修复建议。

弱点类型

风险等级

说明

修复建议

不安全的Fastjson配置

高危

应用的Fastjson开启了反序列化功能,该功能可能被攻击者利用,造成远程命令执行。如非必要,请关闭该功能。

请将Fastjson的safemode设置为true,或将autotype设置为false。

不安全的log4j配置

高危

您的log4j组件开启了lookup功能,攻击者可能通过该功能进行JNDI注入,从而造成远程代码执行漏洞。

请升级log4j到最新版本,或删除Jar包中的org/apache/logging/log4j/core/lookup/JndiLookup.class文件。更多信息,请参见Apache Log4j2 远程代码执行漏洞(CVE-2021-44228)。

不安全的启动参数

高危

当攻击者可以访问到JDWP调试端口的时候,可以通过该功能执行任意代码,造成远程代码执行。

如无特殊场景,请及时关闭JDWP端口或者避免将JDWP端口暴露在公网,谨防长期运行的应用开启了JDWP端口。

Shiro弱密钥

高危

Shiro应用使用了较弱的加密密钥,攻击者可能通过破解密钥,进一步进行反序列化攻击,从而造成远程代码执行。

请及时修改应用中的Shiro加密密钥。

不安全的JMX配置

中危

开启了JMX的远程链接,且在认证方面存在风险,攻击者可能会远程连接应用的JMX服务并造成命令执行风险。

请关闭JMX服务的远程连接,或者请使用较为安全的认证口令。

不安全的Rhino配置

中危

Rhino框架中包含了危险的properties,攻击者可能通过这些properties进行远程代码执行攻击。

先升级rhnio到最新版本,然后使用SafeStandardObjects定义rhino的上下文,防止JavaScript引擎调用Java代码。

下面是使用SafeStandardObjects定义Rhino上下文的示例:

Context ctx = Context.enter(); // Scriptable scope = ctx.initStandardObjects(); // 不安全的写法 Scriptable scope = ctx.initSafeStandardObjects(); // 安全写法 ctx.setOptimizationLevel(-1); String str = "var test={};"; str += "test.call=function(){return 'Successful!';};"; str += "java.lang.System.out.println(test.call())"; try { //传入并执行javascript代码 ctx.evaluateString(scope, str, "", 1, null); } catch (Exception e) { e.printStackTrace(); } finally { Context.exit(); }

不安全的Spring配置

中危

Spring Actuator模块开启了部分端点:heapDump、env、restart、refresh、trace、jolokia、h2-console等,可能造成敏感信息泄露或者远程代码执行漏洞。

如无特殊场景,请关闭对应功能。

脆弱的登录凭证

中危

应用在登录口令安全性较弱,攻击者可能通过爆破弱口令登录您的系统,从而获取敏感信息甚至服务器权限。

请及时修改该应用的密码为复杂密码。

不安全的JNDI配置

低危

您的应用存在不安全的useCodebaseOnly/rmi-trustURLCodebase/ldap-trustURLCodebase参数设置,可能存在JNDI注入风险。

请将JDK升级到最新版本,如果无法升级,在应用启动时候添加启动参数:

-Djava.rmi.server.useCodebaseOnly=true -Dcom.sun.jndi.rmi.object.trustURLCodebase=false -Dcom.sun.jndi.ldap.object.trustURLCodebase=false

不安全的XML实体配置

低危

XML解析外部实体功能已开启,这可能导致您的应用遭受XXE攻击。

如果无特殊场景,请勿使用外部实体。

数据库弱口令

低危

应用连接数据库时使用弱口令,攻击者可能通过该弱口令连接您的数据库造成敏感信息泄露或远程命令执行。

请及时更改应用连接数据库的密码为复杂密码。

相关文档

应用防护和WAF有什么区别?

支持防护Python、Go、.NET应用吗?

应用防护功能对应用运行是否存在影响?

本页导读 (1)

支持的能力

攻击检测(Java应用)

攻击检测(PHP应用)

应用漏洞防御

应用行为分析

内存马防御

弱点检测

网址:应用防护RASP介绍 https://www.yuejiaxmz.com/news/view/664557

相关内容

移动安全防护系统介绍
电脑维护常用技巧介绍
健康管理的介绍与应用
宠物养护与疫病防治专业介绍 PPT课件
智能照明系统应用介绍
母婴护理小常识介绍
幼儿护理介绍模板.pptx
什么是ESD保护?防静电符号和ESD保护方法、产品介绍
2017宠物养护专业介绍及就业方向
智能安防系统介绍

随便看看