转载

OpenRASP v1.2.0 正式发布 | 发布DevSecOps轻量级解决方案,Java内存占用减少一半

OpenRASP v1.2.0 正式发布 | 发布DevSecOps轻量级解决方案,Java内存占用减少一半

OpenRASP 是百度安全推出的一款开源、免费的自适应安全产品,目前与国际知名非盈利安全组织 OWASP(Open Web Application Security Project)达成深度合作,现已加入到OWASP全球技术项目中,在全球范围内进行大规模推广。OpenRASP将新兴的RASP(Runtime Application Self-Protection)安全防护技术普及化,使其迅速成为企业Web安全防护中的一个重要武器,有效增强防御体系纵深和对漏洞防护的适应能力。由于OpenRASP直接在Web服务应用内部对漏洞脆弱环节做针对性防护,所以防护效能与传统WAF等手段相比有着革命性提升。OpenRASP通过开源社区迅速推广和成熟,解决了商业RASP长期以来难以克服的稳定性和兼容性问题,成为目前业界应用最广泛的RASP方案。

距上一个版本发布相隔约2个月,百度安全此次发布为 OpenRASP v1.2 正式版。

OpenRASP v1.2.0 正式发布 | 发布DevSecOps轻量级解决方案,Java内存占用减少一半

DevSecOps 轻量级解决方案

在这个版本里,我们开源了openrasp-iast - 一款基于RASP技术的灰盒漏洞检测工具。openrasp-iast 的定位是DevSecOps工具,通常部署在预上线环境(UAT),在QA完成功能测试后发起漏洞扫描。与黑盒扫描器不同之处在于,它既不需要强大的爬虫,也不需要依赖于页面响应来检测漏洞,而是根据应用内部的行为信息来判断。举个例子,若要检测目录遍历漏洞,扫描器通常会替换请求参数为 ../../../../etc/passwd,并检测页面是否包含 root:x:0:0:root:/root:/bin/bash 关键字来判断是否存在漏洞;对于 openrasp-iast 而言,在替换完参数后,只需要检查应用是否真的读取了 /etc/passwd 就可以做出判断。

若要评估扫描器的检测效果,通常从如下几个维度入手:

  1. 扫描效率。在避免业务扫挂的情况下,能否在最短的时间,检出最多的漏洞?

  2. 爬虫能力。能覆盖多少接口?如果需要用户交互、用户登录如何处理?

  3. 检测能力。对于没有回显,或者难以判断的漏洞(比如文件上传),如何处理?

下面我们来看下 openrasp-iast 是如何处理上述问题的。

首先是扫描效率。黑盒扫描器通常无法得知应用内部行为,因此需要发送大量的请求才能确定漏洞类型:

/article.php ?id=1'+and+1=2

/article.php ?id=1 /../../etc/passwd

/article.php ?id=1 ;curl + xx.ceye.com;

...

确定漏洞类型后,若要给出PoC,还需要根据操作系统、服务版本等信息,发出更多的请求才能确定。比如SQLMap按照默认的BEUSTQ顺序,会依次尝试盲注、报错、UNION、堆叠、时间差以及内联注入,直到成功为止。

openrasp-iast 改变了这种模式。通过在管理后台下发IAST专用的信息采集插件,OpenRASP Agent 可以直接获取应用内部的执行信息,比如读取了 ../../../../etc/passwd,访问了 10.10.32.173.xip.io 等等:

OpenRASP v1.2.0 正式发布 | 发布DevSecOps轻量级解决方案,Java内存占用减少一半

之后,IAST专用插件会调用 RASP.request 接口将行为信息、请求信息发送给 openrasp-iast Fuzz 服务器进行分析:

OpenRASP v1.2.0 正式发布 | 发布DevSecOps轻量级解决方案,Java内存占用减少一半

当我们把扫描器的payload,与应用内部的行为关联起来之后,就可以很快的分析出应用存在何种漏洞。无论攻击参数出现在哪里,文件名、SQL语句、执行的命令等等,openrasp-iast 都可以 在同一个请求内确认 。比如,用户输入的 id 参数会触发SQL查询操作,且会修改程序的逻辑,因此 article.php 的 id 参数存在SQL注入漏洞。

因此,对于单个请求参数,openrasp-iast 只需要发出几个Fuzz请求,就可以定位漏洞类型和利用方式,而且几乎不会误报。

其次是爬虫能力。对于黑盒扫描器,或者其他自动化渗透工具而言,由于是主动针对目标发起扫描,因此爬虫的能力至关重要。若接口覆盖不全,只能用浏览器插件、旁路嗅探、模拟事件等方式来补足。

openrasp-iast 的定位是半自动化DevSecOps测试工具,长期部署在测试环境。通过强大的OpenRASP Java/PHP插桩扩展,可以在功能测试阶段自动的采集请求信息,以及请求对应的应用行为信息。

因此,openrasp-iast 无需爬虫,只要研发、QA能够覆盖到的接口,它就可以提取到并进行扫描。同时,openrasp-iast 还可以将接口导出给第三方扫描器,进行补充检测。

最后是检测能力。对于SSRF、文件上传漏洞,如果页面没有给出回显,扫描器将难以进行判断。这个问题不仅影响扫描器,对于检测Web流量的IDS系统也是一个难题。以基于 Java Commons FileUpload 组件的文件上传漏洞为例,openrasp-iast 通过关联 fileUpload 和 writeFile 两个hook点的信息,可以准确的得知上传的文件是否被解析,是否被写入硬盘。

相比于黑盒扫描器,openrasp-iast 对安全人员更加友好。当漏洞检出,黑盒扫描器只会给出PoC,而openrasp-iast不但会给出PoC,还会给出漏洞堆栈,代码行号等关键信息,帮助你与研发人员沟通。

目前,我们已经支持高危漏洞的检测,包括命令注入、文件目录遍历、PHP Eval 代码执行、SSRF、文件包含、文件上传、XXE等等。具体安装方法,请参考 官方文档 -> 安装部署 -> 安装灰盒扫描工具   进行操作。如果你对这个技术有任何想法,欢迎请加入QQ技术讨论群   259318664   参与讨论。

OpenRASP v1.2.0 正式发布 | 发布DevSecOps轻量级解决方案,Java内存占用减少一半

其他优化改进

承蒙社区的支持,OpenRASP 经过2年多的发展已经逐渐成熟,客户的部署规模也在不断扩大。在每个版本里我们都会根据社区的反馈进行改进:

Java 版本内存优化

为了适配大规模的容器部署,我们在这个版本里对Java版本进行了内存占用的优化。由于JS检测逻辑运行时间通常较短,所以在 v1.2.0 开始我们改为两个 Java 线程共用一个 Google V8 引擎的方案。

优化后,Java Agent 内存占用下降约 50%,CPU 占用基本没有变化。

PHP 版本增加代码执行检测点

在这个版本里我们增加了 assert(仅PHP5)、eval 两个函数的监控。目前我们没有提供检测算法,用户可自行修改检测插件,加入对动态执行代码的检测,如 WordPress Social Warfare 插件远程代码执行漏洞。关于检测点能够获取哪些信息的问题,请参考 官方文档   ->   插件开发   ->   参数说明   文档。

SpringBoot 半自动化安装支持

在新版安装程序里,我们增加了 -nodetect   参数,允许你释放 rasp 目录并自动修改配置。因此,从v1.2.0开始,你只需要手动修正 SpringBoot 启动参数,不再需要手动编辑 openrasp.yml。

OpenRASP v1.2.0 正式发布 | 发布DevSecOps轻量级解决方案,Java内存占用减少一半

写在最后

OpenRASP 是百度AIoT安全解决方案的重要组成部分,也是百度下一代AI安全技术栈的核心技术之一。从新一代安全技术的研发与开源,到为行业提供一体化安全解决方案,再到促进学术、企业、机构间多层面协作,百度安全实验室正在升级打造AI时代的安全生态,打破产业隔阂,避免生态碎片化,以此推动AI时代的安全生态建设。

在攻防需求急剧提升的今天,最让人头疼的就是没有源码的老系统,或者没法及时修复漏洞的系统。尤其是金融行业,大量系统是外包开发或者外购商业系统。在这种情况下可以考虑部署OpenRASP系统来进行防护,很多用户的实战经验都表明OpenRASP起到了非常出色的防护效果。

在灰盒工具之后的版本里,我们会加入 污点追踪支持 (精确到字符串索引级别,支持Java、PHP,已经在开发中)。若想在第一时间了解我们的动态,请加入QQ技术讨论群   259318664   讨论, 微信群 由于超过人数需要联系QQ群主加入。若需要进一步 线下交流 ,可单独联系QQ群主(仅限北京地区)。

更多内容请移步:

  • OpenRASP 项目主页:  https://rasp.baidu.com

  • GitHub 源代码:  https://github.com/baidu/openrasp

  • 百度安全的OpenRASP项目,究竟是什么?

*点击阅读原文进入项目主页

OpenRASP v1.2.0 正式发布 | 发布DevSecOps轻量级解决方案,Java内存占用减少一半

原文  http://mp.weixin.qq.com/s?__biz=MzA3NTQ3ODI0NA==&mid=2247485150&idx=1&sn=20190760f0dab1467b3e8c97d98850f8
正文到此结束
Loading...