RASP初识

news2025/1/11 17:14:33

需要了解的东西.

  • 是什么

拦截日志:rasp/logs/alarm/alarm.log

RASP(Runtime application self-protection)运行时应用自我保护。

官方英译
应用程序不应将大部分运行时保护委托给外部设备。应用程序应该能够自我保护(即,在应用程序运行时环境中内置保护功能)
真正的RASP技术运行在应用层,具有用户、应用逻辑和域信息的完整上下文。
RASP需要一系列不可改变的规则,这些规则靠上下文洞悉何时引入了新漏洞,并据此采取相应的措施。这种不可改变性是可以达到的,只要规则内置进应用层代码库中,且部署后无需任何变更。
无论该应用程序在哪个服务器上。它监测从应用程序到系统的所有请求,确保他们是安全的,并在应用程序中直接验证数据请求。

看这图就知道了RASP的两个功能:告警+拦截
image.png

有什么作用

  • 基本安全防护、日志采集
  • 做拦截
  • 打补丁

传统WAF有什么不足

传统的 WAF 主要通过分析流量中的特征过滤攻击请求,并拦截携带有攻击特征的请求。WAF 虽然可以有效个过滤出绝大多数恶意请求,但是不知道应用运行时的上下文,必然会造成一定程度的误报。并且 WAF 严重依赖于特征库,各种花式绕过,导致特征编写很难以不变应万变

应用运行时的上下文是指什么?它在编程中的具体起什么作用?

上下文代表了程序当下所运行的环境,是一个整体的环境,联系你整个app的生命周期与资源调用,是程序可以访问到的所有资源的总和,资源可以是一个变量,也可以是一个对象的引用
在应用程序中某个特定时间段内,程序运行时所处的环境或状态,包括应用程序当前的配置、变量、对象和方法等。
作用于整个应用的上下文,如果运行时只有一个应用,那么可以把它视为是「全局」的上下文;倘若运行时中存在多个应用,那就是每个应用对应一个应用上下文。
在一个应用程序中,不同的代码模块或函数可能会使用不同的变量、配置和对象等,这些东西都与应用程序的上下文有关。
应用上下文中维护的是单一应用范围内共享的状态,如路由、主题、国际化等配置信息,和用户的基本信息与权限等。

举个例子,说说应用程序上下文的作用

如果用户在浏览商品时,价格发生变化,应用可以根据上下文信息展示最新的价格。
在这里,上下文信息就是商品价格这个变量了
应用程序状态:例如正在执行的代码路径、函数调用堆栈、变量值等。
用户会话信息:包括用户身份、权限和活动历史。
输入和输出数据:应用程序接收的请求、参数、数据流和响应。
系统和网络状态:操作系统和网络连接的状态信息。

为什么通过上下文感知就可以更精准地检测攻击

通过上下文感知,可以更精准地监控应用中的变量、函数、程序状态的变化,能够基于应用程序的实际运行情况作出决策,可以检测到对敏感函数的未经授权调用或对数据库的异常查询。

相对于WAF,RASP最突出的功能是什么?

RASP 的不同就在于运行在应用之中,与应用融为一体,可以获取到应用运行时的上下文,根据运行时上下文或者敏感操作,对攻击进行精准的识别或拦截。
题外话
waf是依靠特征检测攻击,存在一定的误报,而RASP审查的是最终需要执行的代码
所以,RASP插桩到代码层面上,可以分析栈堆跟踪信息。
避免漏报!

与RASP有关的一些名词

  • DAST(Dynamic Application Security Testing):动态应用程序安全测试,它模拟黑客行为对应用程序进行动态攻击;
  • SAST(Static application security testing):静态应用程序安全测试,通过检查代码以发现软件缺陷和安全漏洞
  • IAST(Interactive Application Security Testing):交互式应用程序安全测试,通过代理、VPN或者在服务端部署Agent程序,收集、监控Web应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞

IAST相当于是DAST和SAST结合的一种互相关联运行时安全检测技术

IAST和RASP又又什么不同?

一个是交互式应用程序安全测试,一个是运行时应用程序自我保护,都是在程序运行过程中,寻找问题的,而IAST更偏向找漏洞,RASP更偏向保护应用程序、检测生产环境中攻击。

RASP与HIDS有什么区别

RASP是插桩到代码程序上的,形成一个自我保护的框架,主要是守护某个应用不被攻击;
HIDS是主机入侵检测,只有检测功能,并没有实际的拦截功能,而且HIDS主要对象是主机IP,而RASP是应用程序。

  • 功能不同
  • 主要对象不同
  • 作用不同

java Rasp可以从哪几个层面来实现

  • 编译期
  • 字节码加载前
  • 字节码加载后

为什么选择了字节码加载前,就将代码注入进去

在编译期进行 AOP 织入,一般需要编写静态代理,导致灵活性差,对原有的应用代码有修改。
至于为什么不在字节码加载后,进行aop植入,看看chatgpt怎么说的
image.png

javarasp在字节码加载前,怎么把代码写入

有两种方式,一种是Classloader,但是会对现有代码进行修改,另一种是Instrumentation
JDK5版本中提供了Instrumentation功能, 它的最大作用就是可以动态改变和操作字节码

如何利用java Instrumentation在class加载前插入修改代码

“java.lang.instrument”包的具体实现依赖于 JVMTI 。JVMTI(Java Virtual Machine Tool Interface)是一套由 Java 虚拟机提供的。
在这里我们就需要在插入对象的main函数执行前,就插入进去,需要借助premain函数,
然后添加自定义好的类转换器,每当关注的java代码转换成字节码,并执行时,就会走向我们ClassTransformer函数;
这样子,就可以将我们的过滤代码无痕植入了

premain是程序在运行main()之前执行的逻辑, 可以在这部分逻辑中做字节码的修改等操作

除了 ognl.Ognl 类中的 parseExpression 方法加探针外,还有哪些地方可以加探针

比如:java/io/ObjectInputStream、java/lang/ProcessBuilder、com/mysql/jdbc/StatementImpl 等等。重点关注数据的关键流转节点加入 Rasp 探针,进行安全过滤。

OpenRASP

有关 RASP 的理念,早在2014年就已经被提出,并且被世界顶级咨询公司 Gartner列为应⽤安全领域的“关键趋势”。为什么四年以来,RASP 仍然没能取代 WAF 的江湖地位?

CPU 性能损耗 20%
一个安全进程消耗了 CPU 20% 的性能,团队采用了之前没人在这类产品上使用的 JavaScript(JS)语言编写了所有的检测逻辑。
解决办法:用火狐最新版的 Rhino 引擎替代之前的谷歌 V8 引擎来编写代码,JS+Rhino 组合,把 CPU 的性能损耗迅速降到了1%-5% 的可用水平。

参考文献:

  1. https://www.secrss.com/articles/54496
  2. https://developer.aliyun.com/article/1193185
  3. 应用程序上下文什么意思-掘金
  4. 聊聊中后台前端应用:上下文的那些事儿
  5. Rasp 技术介绍与实现

个人使用感受

RASP的缺点是什么?

  • 针对性:这个是缺点,同样也是有点,RASP针对每一种编程语言,都有针对性的编写格式,并不能相互通用,目前可以实现RASP的语言有java、php、python、go,其他未发现。
  • 性能消耗:一个RASP的性能消耗是远大于waf,他需要针对每一个关注类进行插桩,这样无疑会增大服务器负担,性能消耗可承受范围5%-10%
  • 不易维护:无论是javassist插桩,还是ASM插桩,没有比较深的java基础,是很难进行修改的,通过字节码修改classs文件,这一个过程比较难写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1037446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

排序:希尔排序(Shell Sort)算法分析

1.算法思想 希尔排序:先追求表中元素部分有序再逐渐逼近全局有序. 希尔排序∶先将待排序表分割成若干形如 L [ i , i d , i 2 d . . . . , i k d ] L[i,i d,i 2d ...., i kd] L[i,id,i2d....,ikd]的“特殊”子表, 对各个子表分别进行直接插入排序。缩小增量…

1018 锤子剪刀布

一.问题: 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入格式: …

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C++)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C) Baumer工业相机Baumer工业相机的图像剪切(ROI)功能的技术背景CameraExplorer如何使用图像剪切(ROI)功…

急救车工业路由器应用提升急救效率:车联网、数据采集与远程诊疗

急救车作为医院里医疗急救过程中的重要组成部分,在智慧医疗物联网领域中急救车应用4G工业路由器实现网络部署与数据采集,通过工业4G路由器能够实时采集到病患的生理数据、救护现场音频与视频、GPS定位以及车辆运行状态等重要信息。这些数据将被传输到医疗…

【产品资料】产品经理面试问题(一)

今天和大家免费分享产品经理常见的面试题目,含回答思路分析和回答事例。 更多的产品文档、原型模板、视频教程等资源,请关注公众号:Axure高保真原型

6、SpringBoot_项目的打包与运行

七、SpringBoot项目的打包与运行 1.目前项目怎么运行的 通过浏览器访问idea 将jar部署到服务器 2.maven 打包项目 命令 mvn package使用命令后会得到如下的jar 3.程序运行 命令 java -jar 项目.jar启动如下 4.springboot打包需要插件 插件 <plugin><group…

梯度下降法

梯度下降法 对于一个二元一次函数 y ax b&#xff0c;我们只需要知道两个 (x&#xff0c;y) 点即可获取到 a、b 的值&#xff0c;我们称其为精确解&#xff0c;如下图&#xff1a; 但是如果该函数中存在已知分布的噪声&#xff0c;那么又该如何求解&#xff1a; 我们可以假…

如何修复wmvcore.dll缺失问题,wmvcore.dll下载修复方法分享

近年来&#xff0c;电脑使用的普及率越来越高&#xff0c;人们在日常生活中离不开电脑。然而&#xff0c;有时候我们可能会遇到一些问题&#xff0c;其中之一就是wmvcore.dll缺失的问题。wmvcore.dll是Windows平台上用于支持Windows Media Player的动态链接库文件&#xff0c;如…

蓝桥杯每日一题2023.9.24

九进制转十进制 - 蓝桥云课 (lanqiao.cn) 题目描述 分析 #include<bits/stdc.h> using namespace std; int main() {cout << 2 * 9 * 9 * 9 0 * 9 * 9 2 * 9 2;return 0; } 顺子日期 - 蓝桥云课 (lanqiao.cn) 题目描述 分析 全部枚举 #include<bits/s…

Vector Art - 矢量艺术

什么是矢量艺术&#xff1f; 矢量图形允许创意人员构建高质量的艺术作品&#xff0c;具有干净的线条和形状&#xff0c;可以缩放到任何大小。探索这种文件格式如何为各种规模的项目提供创造性的机会。 什么是矢量艺术作品? 矢量艺术是由矢量图形组成的艺术。这些图形是基于…

LeetCode 494.目标和 (动态规划 + 性能优化)二维数组 压缩成 一维数组

494. 目标和 - 力扣&#xff08;LeetCode&#xff09; 给你一个非负整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个 表达式 &#xff1a; 例如&#xff0c;nums [2, 1] &#xff0c;可以在 2…

vue指令(代码部分二)

<template><view><view v-on:click"onClick">{{title}}</view><button click"clickNum">数值&#xff1a;{{num}}</button><view class"box" :style"{background:bgcolor}" click"clickB…

ROS 2官方文档(基于humble版本)学习笔记(三)

ROS 2官方文档&#xff08;基于humble版本&#xff09;学习笔记&#xff08;三&#xff09; 理解参数&#xff08;parameter&#xff09;ros2 param listros2 param getros2 param setros2 param dumpros2 param load在节点启动时加载参数文件 理解动作&#xff08;action&…

【python零基础入门学习】python进阶篇之时间表示方法和异常处理以及linux系统的os模块执行shell命令以及记账程序编写教学(一)

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

第1篇 目标检测概述 —(1)目标检测基础知识

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。目标检测是计算机视觉领域中的一项任务&#xff0c;旨在自动识别和定位图像或视频中的特定目标&#xff0c;目标可以是人、车辆、动物、物体等。目标检测的目标是从输入图像中确定目标的位置&#xff0c;并使用边界框将其标…

Docker 自动化部署(保姆级教程)

Docker 自动化部署 1. jenkins 介绍1.1 参考链接&#xff1a;1.2 jenkins 概述1.3 jenkins部署项目的流程 2. jenkins 安装2.1 基于docker 镜像2.2 启动 jenkins 后端服务2.3 登录 jenkins 服务后端 3. jenkins自动化部署开始3.1 下载需要的插件3.2 创建任务3.2.1 描述3.2.2 配…

Vue3+element-plus切换标签页时数据保留问题

记录一次切换标签页缓存失效问题&#xff0c;注册路由时name不一致可能会导致缓存失效

Visio——绘制倾斜线段

一、形状 -> 图表和数学图形 -> 多行 二、放置多行线&#xff0c;可以发现存在两个折点 三、选择多行线&#xff0c;右键选择删除点&#xff0c;即可得到倾斜线段

【python爬虫】爬虫所需要的爬虫代理ip是什么?

目录 前言 一、什么是爬虫代理 IP 二、代理 IP 的分类 1.透明代理 2.匿名代理 3.高匿代理 三、如何获取代理 IP 1.免费代理网站 2.付费代理服务 四、如何使用代理 IP 1.使用 requests 库 2.使用 scrapy 库 五、代理 IP 的注意事项 1.代理 IP 可能存在不稳定性 2…