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

相关文章

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过