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

相关文章

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作