OpenRASP 是百度安全推出的一款开源、免费的自适应安全产品,目前与国际知名非盈利安全组织 OWASP(Open Web Application Security Project)达成深度合作,现已加入到OWASP全球技术项目中,在全球范围内进行大规模推广。OpenRASP将新兴的RASP(Runtime Application Self-Protection)安全防护技术普及化,使其迅速成为企业Web安全防护中的一个重要武器,有效增强防御体系纵深和对漏洞防护的适应能力。由于OpenRASP直接在Web服务应用内部对漏洞脆弱环节做针对性防护,所以防护效能与传统WAF等手段相比有着革命性提升。OpenRASP通过开源社区迅速推广和成熟,解决了商业RASP长期以来难以克服的稳定性和兼容性问题,成为目前业界应用最广泛的RASP方案。
随着OpenRA SP用户的逐渐增多,安全社区对OpenRASP的讨论也多了起来,我们也收到了用户的致谢,这里一并总结下。
首先是 WeirdBird 发起的JNI防护讨论。 在 webshell中的分离免杀实践-java篇 一文中,他提出了两种免杀思路:
通过 URLClassLoader 远程加载菜刀后门,关键代码不落地
通过JNI实现自定义Java方法,通过对popen包装实现命令执行后门
对于方案1,由于是内存加载,对基于恶意payload特征的查杀工具比较有效; 如果EDR强行查杀URLClassLoader,则会有误报风险。 而对于OpenRASP来讲,由于攻击者最终还是要调用 java.lang.ProcessBuilder,所以无法绕过OpenRASP目前已有的命令执行检测点。
对于方案2,作者放弃使用 java.lang.ProcessBuilder,改用自定义的JNI函数实现命令执行,因此绕过了OpenRASP的检测点。 另外,作者建议将JNI类库放到远程共享服务器,并使用UNC路径(如 //8.8.8.8/bds.dll)加载,来进一步减少在目标主机上的痕迹。
为了缓解上述绕过,我们在即将发布的 v1.2 版本里加入了 System.load 、 System.loadlibrary 两个方法的hook点,并新增两个检测算法:
loadLibrary_unc: 若在请求来之后发生JNI加载且路径为UNC地址,拦截请求
loadLibrary_other: 若在请求来之后发生其他JNI加载事件,可以记录日志或者直接阻断
定位黑链来源的难题
某用户在OpenRASP技术讨论群里求助,在自家网站发现黑链,使用多种工具扫描都没查出webshell。 为了定位后门文件,我们帮助用户编写了一个简单的插件,当PHP-FPM尝试修改指定文件时,打印报警:
plugin.register('writeFile', function (params, context) {
// 为了保护客户隐私,我们简化了路径
if (params.realpath.indexOf('/compiled/test.js') != -1) {
return {
action: 'log',
message: 'Opened ' + params.realpath + ' for writing'
}
}
return clean
})
通过排查报警日志,我们最终定位到了后门。 由于该文件仅用于更新黑链,不具备webshell常见功能,所以市面上的webshell扫描器未能检出。 当然,使用系统机制如audit、ETW监控文件写入事件,手动关联访问日志也能得出一些结论,只是无法像OpenRASP这样一步到位。
最后是关于Jackson、Xstream最近爆出的反序列化漏洞的讨论。 在网上公开的PoC后,我们第一时间进行了测试,并更新了官方插件:
Jackson CVE-2019-12384 - 增加 com.fasterxml.jackson.databind 检测,可以防护所有基于databind的命令执行利用,如CVE-2017-7525
Xstream CVE-2019-10173 - 无需更新,已经支持防护(即 command_reflect 算法)
目前 v1.2.0 还在稳定性测试中,即将发布。 最新的 2019-0726-1200 插件可以在 https://github.com/baidu/openrasp/blob/1.2/plugins/official/plugin.js 下载。
获得大型金融企业用户致谢
在今年的某网络安全攻防演练中,百度安全基于OpenRASP给某大型金融企业用户云平台基础设施运行提供了安全保障,安全监控与审计等技术支撑工作,保障了该行的信息系统安全稳定运行,未发生重大网络安全事件。 在演练结束后,OpenRASP获得了用户的 书面致谢 。 这也是开源安全软件首次获得国内头部大型金融企业的致谢。
OpenRASP 是百度AIoT安全解决方案的重要组成部分,也是百度下一代AI安全技术栈的核心技术之一。 从新一代安全技术的研发与开源,到为行业提供一体化安全解决方案,再到促进学术、企业、机构间多层面协作,百度安全实验室正在升级打造AI时代的安全生态,打破产业隔阂,避免生态碎片化,以此推动AI时代的安全生态建设。
在攻防需求急剧提升的今天,最让人头疼的就是没有源码的老系统,或者没法及时修复漏洞的系统。 尤其是金融行业,大量系统是外包开发或者外购商业系统。 在这种情况下可以考虑部署OpenRASP系统来进行防护,很多用户的实战经验都表明OpenRASP起到了非常出色的防护效果。
另外,本月我们会发布基于RASP技术的DevSecOps社区版方案,之后的版本会加入 污点追踪支持 (精确到字符串索引级别,支持PHP、Java)。 若想在第一时间了解我们的动态,请加入QQ技术讨论群 259318664 讨论, 微信群 由于超过人数需要联系QQ群主加入。 若需要进一步 线下交流 ,可单独联系QQ群主(仅限北京地区)。
更多内容请移步:
OpenRASP 项目主页: https://rasp.baidu.com
GitHub 源代码: https://github.com/baidu/openrasp
百度安全的OpenRASP项目,究竟是什么?
*点击阅读原文进入项目主页