OpenRASP 初探(一)之项目介绍

2023-10-24 22:33
文章标签 项目 介绍 初探 openrasp

本文主要是介绍OpenRASP 初探(一)之项目介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

在这里首先感谢百度安全团队对安全事业的贡献精神,让我得以接触到这款国内为数不多的功能完善、成熟的RASP产品。其次也感谢百度安全团队的大牛 @c0de::bre@k 在我进行调研实施的时候,给予了最大的帮助和耐心的解答。

后面我将分几篇文章介绍我在调研Openrasp时的一些心得,希望对大家能有所帮助和启发。

公司的核心业务其实大部分使用python和go语言来进行开发,因此一直以来包括waf策略等防护手段更多针对python和go语言的特性做一些防护规则的配置,其他的技术栈关注较少。但使用较少不代表没有,前段时间经过对业务的排查梳理,意外发现支付业务等一系列应用其实还是使用了java技术栈,而恰恰这块安全的防护较为薄弱。此时恰好了解到openrasp项目,便由此想调研下这个项目是否适合公司的环境,也正好可以弥补java安全的短板。

一、项目背景

下面的内容呢大部分来自Openrasp的官网,了解一个项目最好的途径,莫过于看它的官方手册和指南。
详细内容大家可以直接访问官网,我这里只挑出一些重要的信息,帮大家快速了解。

OpenRASP 官网:https://rasp.baidu.com/
项目文档:https://rasp.baidu.com/doc/

OASES(Open AI System Security Alliance)智能终端安全生态联盟是国内首个致力于提升智能终端生态安全的联合组织,由百度、华为、中国信通院联合发起成立,成员包括安全厂商、行业安全专家、设备厂商、⾼校和各行业安全专家等。OASES 目前包含 KARMA、OASP、OpenRASP、MesaLink、MesaLock Linux 等几个子项目。其中,OpenRASP 主要应⽤于云端应用安全防护,以及上线前的应用安全测试。Gartner 在2014年提出了「 运行时应用自我保护」技术的概念,即对应⽤服务的保护,不应该依赖于外部系统;应⽤应该具备自我保护的能⼒。OpenRASP 是该技术的开源实现,它改变了防⽕墙依赖请求特征来拦截攻击的模式。以注入类的漏洞举例,Openrasp 可以识别用户输入的部分,并检查程序逻辑是否被修改。由于不依赖请求特征,确保每条告警都是有效的。

License:目前 OpenRASP 是开源项目,项目 license 是 Apache License 2.0,相对较为宽松。

目前项目主要由百度安全团队维护。

二、支持功能

1)web攻击检测:包含sql注入、命令注入、xss、敏感文件下载、任意文件读取、xxe、反序列化(fastjson等)、Struts OGNL 代码执行、ssrf、敏感日志打印等。另外还集成了一些 CVE 的检测。

2)服务器安全基线检查:关键 Cookie 是否开启 HttpOnly(Tomcat)、进程启动账号检查、后台密强度检查(Tomcat)、不安全的默认应用检查(Tomcat)、Directory Listing 检查(Tomcat)、数据库连接账号审计 (jdbc) 备注:基线检查会在应用服务启动时进行检查,可设置不符合检查项禁止启动。

3)应用加固:当应用收到请求,我们会通过输出响应头的方式,实现对应用的加固。
在这里插入图片描述4)openrasp-iast 灰盒扫描:openrasp-iast 作为 openrasp 的一个插件集成到 openrasp 中,采用被动扫描的方式,java 探针在请求结束后会将本次请求参数、hook 点信息提交给服务端进行分析并选择性的 fuzz 目标。openrasp 会根据 hook 点信息精确检测漏洞。

三、RASP 技术原理

在 Java 技术栈下,RASP 引擎以 javaagent 的形式实现,并运⾏在 JVM 之上。在应⽤服务器启动的时候,RASP 引擎借助 JVM 自身提供的 instrumentation 技术,通过替换字节码的方式对关键类⽅法进行挂钩。RASP 的技术原理与 APM 是一样的,只是挂钩的函数要少很多。以 OpenRASP 为例,我们挂钩了 SQL 查询、文件读写、反序列化对象、命令执⾏等关键操作,具体列表可参考:Hook 函数表。
在这里插入图片描述

四、openrasp-iast 技术原理

IAST(交互式扫描)技术是一种实时动态交互的漏洞检测技术,通过在服务端部署 agent 程序,收集、监控 Web 应用程序运行时函数执行、数据传输,并与扫描器端进行实时交互,高效、准确的识别安全缺陷及漏洞。目前 OpenRASP 项目已实现相当于 IAST agent端的 OpenRASP agent,在此基础上引入一个扫描端,即可实现一个完整的 IAST 扫描工具。

灰盒扫描工具采用 Python3 实现,数据库采用 MySQL,通讯采用 HTTP+JSON 的方式。整体架构图如下:
在这里插入图片描述工具分为扫描器端和 agent 端,Agent 端用于收集 web 应用的运行信息,扫描器端用于处理插件产生的请求信息,并完成整个 IAST 扫描逻辑。

五、部署方式/架构

目前 openRASP 支持单机部署和大规模部署(支持容器化部署)。部署架构可参见下图,在每个应用节点需安装 agent,管理后台负责策略下发和节点的集中管理。

在这里插入图片描述参考链接:1. 大规模(容器)部署
2. agent工作机制流程

这篇关于OpenRASP 初探(一)之项目介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/278211

相关文章

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和

gitlab项目实现添加新成员

《gitlab项目实现添加新成员》:本文主要介绍gitlab项目实现添加新成员方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录gitlabhttp://www.chinasem.cn项目添加新成员1、进入项目2、手动输入要添加成员的账号或者搜索总结gitlab项

Redis的安全机制详细介绍及配置方法

《Redis的安全机制详细介绍及配置方法》本文介绍Redis安全机制的配置方法,包括绑定IP地址、设置密码、保护模式、禁用危险命令、防火墙限制、TLS加密、客户端连接限制、最大内存使用和日志审计等,通... 目录1. 绑定 IP 地址2. 设置密码3. 保护模式4. 禁用危险命令5. 通过防火墙限制访问6.