knownsec / 404StarLink

404StarLink - 推荐优质、有意义、有趣、坚持维护的安全开源项目
7.93k stars 783 forks source link

[项目申请]: JRASP(Java Runtime Application Self-Protection) #96

Closed HsinTsao closed 1 year ago

HsinTsao commented 1 year ago

基本要求

项目名称

JRASP

项目地址

https://github.com/jvm-rasp/jrasp-agent

项目简介

JRASP(Java Runtime Application Self-Protection), 即Java应用自我保护系统。 RASP 是一种应用安全防护技术,由Gartner在2014年提出了“Runtime application self-protection”。这种技术直接将防护引擎嵌入到应用内部,能够感知应用上下文,与应用程序融为一体,使程序自身拥有自保护的能力。应用程序无需在编码时进行任何的修改,只需进行简单的配置即可。Jrasp是针对Java Web应用一种RASP安全防护技术,在不需要额外编码的情况下,基于Java Agent技术对Java字节码进行修改实现防御。在实时采集Web应用的高风险行为的同时,通过特征规则、上下文语义分析及多种攻击检测算法来实现高精度的攻击检测和实时防御。

项目官网https://www.jrasp.com/

项目亮点

JRASP产品能力

1. 实时检测与阻断
2. 应用漏洞的攻击检查与防御
JRASP 支持防御 web 通用漏洞,并对检测能力做了分类,针对每个漏洞,我们详细的说说明了攻击场景,与检测能力覆盖程度。
- A1-远程代码执行/命令执行(RCE)
- A2-反序列化
- A3-任意文件读取
- A4-任意文件删除
- A5-任意文件写入
- A6-SQL 注入
- A7-服务器端请求伪造漏洞(SSRF)
- A8-外部实体注入(XXE)
- A9-SPL/OGNL 表达式注入

我们在通用规则下测试了最近两年常见 CVE 漏洞均通过测试,包括但不限于下列漏洞

CVE编号 漏洞名称 漏洞类型
CVE-2022-42889 Apache commons text 任意代码执行
CVE-2022-33891 Apache Spark shell 任意代码执行
CVE-2022-22965 Spring4Shell 远程命令执行
CVE-2022-22963 Spring-Cloud-Function-SPEL 远程代码执行
CVE-2022-22947 Spring Cloud Gateway 代码注入 远程代码执行
CVE-2021-35464 ForgeRock AM远程代码执行漏洞 反序列化远程代码执行
CVE-2021-34429 Jetty WEB-INF 文件读取漏洞 敏感文件访问
CVE-2021-29505 XStream远程代码执行漏洞 敏感文件访问
CVE-2021-26295 Apache OfBiz反序列化命令执行漏洞 反序列化远程命令执行
CVE-2021-25646 Apache Druid远程代码执行漏洞 远程代码执行
CVE-2021-21234 SpringBoot Actuator Logview 任意文件读取 任意文件访问
CVE-2020-36188 Jackson-databind反序列化漏洞 反序列化远程命令执行
CVE-2020-35728 Jackson-databind反序列化漏洞 反序列化远程命令执行
CVE-2020-26259 XStream任意文件删除漏洞 任意文件删除
CVE-2020-17530 Struts 远程代码执行漏洞 远程代码执行
CVE-2020-17519 XStream任意文件删除漏洞 任意文件删除
CVE-2020-17519 Apache Flink 任意文件访问 敏感文件访问
CVE-2020-13942 Apache Unomi远程代码执行 远程代码执行
CVE-2020-14882 WebLogic远程命令执行漏洞 任意代码执行
CVE-2020-9484 Tomcat Session 反序列漏洞 反序列化代码执行
CVE-2020-5410 Spring Cloud Config目录穿越漏洞 目录穿越
CVE-2020-1938 Apache Tomcat文件包含漏洞 文件包含
CVE-2019-17571 Apache Log4j反序列化漏洞 任意代码执行
CVE-2019-17558 Apache Solr Velocity模板语言执行任意命令 任意代码执行
CVE-2019-12384 Jackson 反序列化命令执行 反序列化代码执行
CVE-2019-0193 Apache Solr 命令执行 任意代码执行
CVE-2018-15531 JavaMelody XXE漏洞 XXE漏洞
CVE-2018-1273 Spring Data Commons 命令执行 任意代码执行
CVE-2019-12384 Spring-messagingSpEL表达式注入 表达式注入
CVE-2018-1270 Jackson 反序列化命令执行 反序列化命令执行
CVE-2018-1259 Spring Data Commons XXE漏洞 XXE漏洞
CVE-2017-8046 Spring-Data-REST RCE漏洞 远程代码执行
CVE-2017-12629 Apache Solr命令执行 命令执行
CVE-2016-4437 Apache Shiro反序列化漏洞 反序列化代码执行
CVE-2016-3088 ActiveMQ 命令执行 命令执行

以上漏洞均可在官网查看实际防御案例:https://www.jrasp.com/case/

3. 未知漏洞的防御与阻断

RASP 防御技术更多是根据请求上下文进行拦截,也就是根据应用的请求来判断其是否存在如数据库 SQL 注入、数据库慢查询、任意文件上传、敏感文件下载等请求,一旦发现类似的恶意请求,就可以迅速识别到恶意攻击行动,并进一步回溯发现攻击来源和漏洞。发送攻击时,边界防护设备无法掌握应用下一步动向。RASP 技术可以识别出异常的程序逻辑,比如反序列化漏洞导致的命令执行,进行阻断,因此可以对抗未知漏洞。

4. 高效的漏洞位置排查

JRASP 通过对被攻击应用程序的应用堆栈与请求入口能够快速确定判断漏洞产生的位 置,便于安全团队和开发团队排查漏洞位置。


产品特性

  1. 无需频繁更新规则

    由于我们已将应用中的高危函数进行了 hook,因此在新的攻击出现时候,也会触发我们的调用逻辑,故在原有的规则下即可进行防御,而不用像 WAF 或态势感知等产品需要升级更新相应的规则。

  2. 捕获或阻断 0day 漏洞的攻击 JRASP 技术,直接注入到被保护应用的服务中提供函数级别的实时防护,可以在不更新策略以及不升级被保护应用代码的情况下检测/防护未知漏洞,尤其适合大量使用开源组件的互联网应用以及使用第三方集成商开发的金融类应用。

  3. 精准的告警识别减少误报 JRASP 的注入疫苗方式,能够有效的避免误报,产生的告警有应用内部的调用逻辑堆栈,这种机制下无误报。而传统的 WAF 产品只能根据攻击的请求特征进行告警,而HIDS 产品只能在主机被沦陷后才能感知到。在攻防演练过程中能做到精确识别,并避免攻击。

  4. 无需重启热部署

    在无需业务重启的情况下进行热部署。

  5. 强大的灵活性

    • 插件可定制 虽然我们对常用开源中间件如tomcat、jetty、springboot等做了支持,一般企业内部会有自研、对各种开源组件包装加壳等操作来适应企业自身的基础设施, 只需要简单的遵循插件开发规范,就可以开发贴合企业架构的插件。

    • 安全插件jar热插拔 安全插件按照中间件和功能分类,每个插件都能实现热加载和热卸载(称之为插件版本升级)。

    • 检测参数实时更新 每个安全插件都支持参数更新(如黑白名单等)

  6. 自身安全性

    "打铁还需自身硬",JRASP在防护业务安全的同时,也十分重视自身安全性建设。JRASP的防护策略(包括hook类、参数检测逻辑等)仍然一定程度上于依赖信息不对称, 如何保障策略在传输过程、运行时不被恶意窃取分析是一个重要问题。 JRASP对整个通信链路进行了加密,包括:

    • 管理端下发给守护进程的的安全策略加密;
    • 守护进程与agent通信的http接口鉴权,防止插件被控制;
    • 插件jar包传输全过程加密,在类加载时解密,最大程度防止jar包被反编译;
Knownsec404team commented 1 year ago

您好,感谢投稿。项目未通过404星链计划技术评审环节,期待项目后续的更新和迭代,随时欢迎再次投稿,谢谢!