OpenRASP v0.20 发布 | 性能提升与零规则漏洞检测


OpenRASP是百度安全推出的一个自适应安全产品,凝聚百度多年黑产对抗经验,保护引擎集成在应用内部,可以在应用服务层面进行深度保护和异常检测,实现去边界化防护,运维成本也更低。OpenRASP已经开源、免费提供给用户,并且与OWASP联合在全球范围内重点推广。

同时,OpenRASP也是OASES智能终端安全生态联盟(Open AI System Security Alliance,简称OASES联盟)的核心开放技术之一。OASES联盟是国内首个致力于AI时代提升智能终端生态安全的联盟组织,联盟秉承“技术赋能、标准驱动、生态共建、产业共赢”的宗旨,对外提供多项安全服务。OASES联盟是一个开放的组织,欢迎更多合作伙伴的加入,共建安全生态。

据第一个版本发布相隔约2个月,百度安全实验室此次发布为OpenRASP v0.20版本。

What's New

首先,该版本使用Mozilla Rhino引擎替换了之前使用的J2V8。对于RASP类型的轻量级规则,直接运行在JVM上的Rhino引擎比分离在外的v8有显著的性能优势。

同时,我们也测试了 Lua 引擎的性能,由于Lua和最新版的Rhino引擎性能相差无几,所以我们决定继续使用JavaScript插件系统。

我们配置100线程,绑定2个CORE,使用 wrk 将CPU打满,然后观察最大QPS。详细的测试报告和数据,可在官方文档里查看。 具体测试结论如下图所示:

在这个测试下性能overhead约2%

其次,该版本增设了许多的新功能。例如在友好性上,增加了自定义拦截页面,发生攻击时不会再抛出异常。为了方便用户排查问题,我们在URL里增加了request_id 参数,方便查找对应的报警日志。

 

最后,该版本引入服务器安全基线检查功能  。安全基线可以有效的降低服务器被入侵的风险,比如不允许使用root/sa/sys等账号连接数据库服务器等等。我们目前仅支持tomcat,一共支持5种策略,具体可参考官方文档 (https://rasp.baidu.com/doc/usage/security_policy.html)

算法改进

v0.20 里,我们公开了两种零规则漏洞检测算法。

第一个算法是SQL注入检测算法#1这个算法通过识别查询语句里的用户输入来实现,当用户的输入改变了查询语句的逻辑,OpenRASP就会判定为注入。

 

举个例子,当攻击者发起这样一个请求时,

?id=abc--')/*!UNION/**/ALL*//*!SELECT*//*!USER*/(),/*!user*//*!FROM*/users#

OpenRASP 会看到完整的SQL查询语句,e.g

SELECT * FROM users WHERE id = 'abc--')/*!UNION/**/ALL*//*!SELECT*//*!USER*/(),/*!user*//*!FROM*/users#

此时,OpenRASP便可以关联数据库的查询语句和Web请求参数,实现零规则SQL注入检测。那么具体是如何实现的呢?

首先,检测插件会调用RASP.sql_tokenize这个API,对语句进行token解析

['SELECT',   '*',  'FROM', 'users',  'WHERE',  'id', '=',  'abc',  '--', '\'',  ']/*!',  'UNION', 'ALL',  '*//*!',  'SELECT', '*//*!',  'USER',  '*/()', ',',  '/*!',  'user', '*//*!',  'FROM',  '*/', 'users' ]

然后,在语句里去掉匹配到的用户输入,

SELECT * FROM users WHERE id =

 

并再次进行token解析,

[ 'SELECT','*', 'FROM', 'users', 'WHERE', 'id', '=' ]

 

当token个数相差超过2,即表明当前的查询语句逻辑发生了改变,也就意味着这里就存在SQL注入漏洞。具体算法可以参考最新的官方插件。

 

对于传统WAF的来说,一方面拿不到数据库的查询语句,只能在请求里寻找SQL注入特征;另一方面也无法识别用户输入,所以存在绕过的可能。而 OpenRASP能够结合上下文和语义引擎,实现更加灵活的检测算法。

 

第二个算法是WebShell行为识别算法。当黑客上传后门,他通常会做如下几种事情

1.     访问敏感文件,比如服务器配置信息、管理员执行的命令记录

2.     下载数据库

3.     尝试入侵更多机器

OpenRASP通过文件和数据库探针,能够准确的识别上述恶意行为并进行拦截。具体要探测哪些敏感文件,请看官方插件(https://github.com/baidu/openrasp/blob/master/plugins/official/plugin.js

 

在后续的小版本里,我们还会增加慢查询检测功能,以及更多的零规则检测算法,敬请期待。

新增功能

• 支持自定义拦截页面

       • 通过 `block.url` 配置

        • 默认页面: 小恐龙页面 (https://rasp.baidu.com/blocked/ )

• 增加服务器安全基线检查功能,目前仅支持 tomcat,可以检测如下非安全配置

      • manager/html 弱口令

       • JSESSION 未开启 httpOnly

       • tomcat以root启动

       • 默认的 webapps 没有删除

• 当发生攻击,插件会额外输出 `confidence` 字段,用于标识检测结果可靠性

• 所有响应增加 `X-Protected-By: OpenRASP` 响应头

• 支持 HTTP 报警推送

• 增加对 Jetty、JBoss 5~6 服务器的支持

• 增加 log.maxstack 配置选项,用于配置 alarm 日志里最大堆栈

算法改进

• 根据UA、Header来识别常见扫描器(默认关闭,请手动修改插件)

• SQL注入检测算法 #1 开放

• 支持敏感文件下载漏洞检测

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值