OpenRASP 简介
OpenRASP 是百度安全推出的一款开源、免费的自适应安全产品。OpenRASP将新兴的RASP(Runtime Application Self-Protection)安全防护技术普及化,使其迅速成为企业Web安全防护中的一个重要武器,有效增强防御体系纵深和对漏洞防护的适应能力。
据上一个版本发布相隔约1个月,百度安全实验室此次发布为OpenRASP v0.21版本。
What's New
首先,该版本进一步加强了SQL注入的检测能力。在v0.21里,我们公开了SQL注入检测算法#2,即根据语句规范来判定是否存在SQL注入攻击。目前我们一共支持5种规范:
-
禁止多语句执行,e.g select 123; select 456
-
禁止16进制字符串,e.g load_file(0x41424344)
-
禁止MySQL版本号注释,e.g /*!12345
-
禁止数字常量比较操作,e.g SELECT 1 FROM dual WHERE 8778 <> 8778
-
禁止使用黑名单里的函数,e.g load_file,benchmark,pg_sleep, …
我们挑选了包括Discuz 等十几种开源应用,提取了他们的SQL语句进行测试,目前没有发现误报的情况。具体要开启哪些检测逻辑,请结合业务来进行配置。
其次,该版本引入了数据库拖库检测功能。通常,黑客会先尝试上传WebShell,一旦成功,就可以利用数据库管理功能,进行拖库操作。当单个SELECT语句读取行数超过预先定义的阈值,OpenRASP就会产生报警,提示管理员检查应用是否异常。这个条数默认是500,可以在 rasp.properties 里配置。
然后,在安全基线检查上,我们增加了对数据库连接账号审计的功能。使用管理员账号链接数据库的Web应用,通常会带来更多安全隐患。当发生SQL注入攻击,或者当黑客拿到Web服务器控制权限时,结合一系列技巧,黑客可以进一步拿下数据库服务器,获取更多机密数据。
目前我们会检测的管理账号如下:
-
SQL Server: sa、administrator
-
MySQL: root
-
Oracle: sys、system
另外,为了减轻运维压力,相同的Web应用,每天只会报警一次。
最后值得一提的是,在v0.21里,我们增加了对DB2数据库的支持。 DB2在金融行业广泛应用,然而商业RASP产品均不支持。由于授权原因,我们仅测试了DB2 9.7、10.5等几个版本。
更新详情
重大变更
-
安全基线日志拆分到单独的文件里
-
方便采集不同类型的日志
-
升级前,用户需要手动删除 rasp/conf/rasp-log4j.xml 文件
新增功能
-
检测 JSTL 方式的文件包含漏洞,或者SSRF漏洞利用
-
支持 DB2 数据库,我们仅测试了免费版本,9.7 和 10.5
-
服务器安全基线
-
新增数据库连接账号审计功能,e.g 使用 root 连接 mysql、使用 sa 连接 mssql 等等
-
增加慢查询审计功能
-
使用 SELECT 语句读取超过500行数据,可配置
-
支持 Syslog TCP 方式传输报警日志
算法改进
-
公开SQL注入检测算法 #2 – 基于语句规范,可修改插件配置
-
禁止多语句执行,e.g select 123; select 456
-
禁止16进制字符串,e.g load_file(0x41424344)
-
禁止MySQL版本号注释,e.g /*!12345
-
禁止数字常量比较操作,e.g SELECT 1 FROM dual WHERE 8778 <> 8778
-
禁止使用黑名单里的函数,e.g load_file,benchmark,pg_sleep, …
API 变更
-
新增 context.appBasePath 接口,可获取web应用根目录
-
新增 session 操作接口,context.session.setSession、context.session.getSession
其他变更
-
插件拆分,部分不常用的检测逻辑,比如扫描器识别功能,移动到 addons 目录