• 版本变更纪要
    • 0.40 版本 - 2018.7.24
      • 重大变更
      • 新增功能
      • 算法变更
      • Bug 修复
      • 其他变更
    • 0.32 版本 - 2018.6.8
      • 算法改进
      • Bug 修复
      • 其他变更
    • 0.31 版本 - 2018.5.22
      • 重大变更
      • 算法变更
      • 新增功能
      • Bug 修复
    • 0.30 版本 - 2018.4.27
      • 重大变更
      • 新增功能
      • API 变更
      • 算法改进
      • BUG 修复
    • 0.24 版本 - 2018.2.2
      • BUG 修复
      • 其他变更
  • 0.23 版本 - 2018.1.23
    • 重大变更
    • 算法改进
  • 0.22 版本 - 2018.1.17
    • 重大变更
    • 新增功能
    • 算法改进
    • API 变更
    • Bug 修复
  • 0.21 版本 - 2017.12.6
    • 重大变更
    • 新增功能
    • 算法改进
    • API 变更
    • 其他变更
  • 0.20 版本 - 2017.10.26
    • 重大变更
    • API 变更
    • Hook 点变更
    • 拦截日志变更
    • 新增功能
    • 算法改进
    • 其他改动
  • 0.13 版本 - 2017.09.22
    • Bug 修复
  • 0.12 版本 - 2017.09.14
    • 新增功能
  • 0.11 版本 - 2017.09.13
    • Bug 修复
  • 0.10 版本 - 2017.08.18
    • 新增功能

    版本变更纪要

    0.40 版本 - 2018.7.24

    重大变更

    Java 版本

    • 命令执行 hook 点,命令参数统一改为字符串形式
    • 所有报警消息改为英文,下个版本增加翻译支持
      PHP 版本

    • 所有报警消息改为英文,下个版本增加翻译支持

      新增功能

    PHP 版本

    • 正式支持 PHP 7.0~7.2
    • 增加对 SQL prepared statement 的支持
    • 使用 v8 default platform 替换自定义 platform,提供更通用的后台任务能力和错误溯源能力
      Java 版本

    • 增加 rename hook 点

      算法变更

    • 命令执行

      • 增加对 FreeMarker 模板执行命令的识别
      • 默认不再拦截所有的命令执行
        • 若完全没有命令执行需求请手动修改 command_other 算法开关为 block
        • 此开关不影响反序列化命令执行的拦截,或者其他算法的检测
    • SSRF
      • 增加对特殊协议的检测,以及对应的检测开关。包括 php://、file:// 等等
      • 用户输入匹配算法,增加对 127.X.X.X 的识别
      • 增加 @dos_man 反馈的一个 dnslog 地址 *.tu4.org
    • 文件目录遍历
      • 修复一个 @Leesec 报告的 /../../ 检出绕过问题
    • PHP 堆栈检测算法
      • 修复 @Ezreal 报告的一个 call_user_func 误报问题
    • 后门上传检测
      • 增加对 rename 的监控,防止通过重命名写入 webshell
    • SQL 注入
      • 增加全局LRU缓存,当检测结果为 ignore 时不再重复检测,以提高性能
      • 用户输入匹配算法,参数最短长度可配置
      • 增加对 into outfile 的检测,并增加相应的检测开关

        Bug 修复

    PHP 版本

    • 增加60多个单元测试,修复2处参数解析错误问题
    • 优化不同协议的处理逻辑,若协议不支持写操作,将不再进入检测插件
    • 修复一个左右斜杠混用,导致的路径精简失败的问题

      其他变更

    • 增加新的拦截页面

      0.32 版本 - 2018.6.8

    算法改进

    • 为所有检测算法增加开关
      • 用户可通过编辑JS插件头部的配置,来控制某个算法是否开启
    • ssrf_common 算法,增加对 ceye.io、transfer.sh 的检测和拦截

      Bug 修复

    • 解决 Resin 3.1.8 一个 classloader 兼容性问题

    • 修复 SQLParser 一处语法解析错误
    • 通过修改包名,解决 mozilla rhino 加载冲突问题

      其他变更

    • 使用v8引擎的snapshot特性,以加快v8实例启动速度

      0.31 版本 - 2018.5.22

    重大变更

    • Java 版本
      • Java 包名改为 com.baidu.rasp
        • 在升级前,用户需要手动删除 rasp/conf/rasp-log4j.xml 文件
        • 待应用启动后,OpenRASP 会自动生成新的日志配置文件
      • 解决高版本 JDK 兼容性问题,ISSUE: rhino jdk8u162 兼容性问题 #98
      • 为了降低 Hook 点开发成本,Hook 框架改为 JavaAssist
    • RaspInstall - OpenRASP 自动安装程序

      • 为了支持自动卸载,我们调整了 RaspInstall.jar 的命令行参数
        • java -jar RaspInstall.jar -install /home/tomcat
        • java -jar RaspInstall.jar -uninstall /home/tomcat

          算法变更

    • SQLi 检测算法 #2,默认关闭常量对比算法

      • 在真实业务里,经常有编码不规范的情况,会造成误报,e.g AND ((0='' OR 0='0')
    • 命令执行检测逻辑调整

      • 为了检测非常规的反序列化、命令执行漏洞,当命令执行来自非 HTTP 请求,也将会进入检测点
      • 适合检测 CVE-2016-8735、CVE-2018-1270 等漏洞

        新增功能

    • Java 版本增加 ascii banner,启动时打印

    • 增加 JDBC Prepared SQL Hook 点
    • 支持 Resin 3.X、4.X 服务器
    • 增加自定义编码配置,允许用户设置 context.parameter 的编码
    • 增加 jnotify 异常的获取

      Bug 修复

    • 由 @园长MM 反馈

      • ProcessBuilder 存在绕过,我们将 Hook 点改为了更底层的 UNIXProcess、ProcessImpl 类
    • PHP 版本
      • 当文件不存在,file_put_contents 不会调用检测插件,已修复
      • 解决日志模块一处内存泄露问题

    0.30 版本 - 2018.4.27

    重大变更

    • Java 版本

      • 调试开关配置选项,由 debug_level 改为 debug.level

        新增功能

    • 增加对 PHP 5.X 的支持

      • Linux 5.3 ~ 5.6
      • Windows 5.6 (仅线程安全版本)
      • Mac homebrew PHP 5.6
    • PHP 安全基线检查
      • INI 配置审计
        • allow_url_include
        • expose_php
        • display_errors
        • yaml.decode
      • 数据库连接账号审计
    • 其他 PHP 版本支持的功能
      • SQL 慢查询审计
    • 测试用例增强
      • 增加 PHP 测试用例
      • 增加简易导航页面
      • 统一增加可点击链接,减少对命令行的依赖
    • 增加PHP版本性能测试报告
      • discuz/wordpress 性能损耗,都在 2% 左右
    • 开放基于 docker 的自动化漏洞测试环境 - app-env-docker

      API 变更

    • directory hook 点,增加 stack 参数

    • ssrf hook 点,增加 ip 参数

      算法改进

    • SQLi 检测算法增强

      • 增加对 UNION NULL 语句的检测
      • 语句规范检查算法,拦截常见盲注函数,e.g ord、chr
      • 为数据库管理器检测算法,单独增加控制开关
    • SSRF 检测算法增强
      • 当请求的URL来自用户输入,且地址是内网地址,将会被并拦截
    • Java - 反序列化检测
      • 拦截通过 ysoserial 执行命令的攻击代码
    • PHP - 增加对中国菜刀的检测
      • 基于堆栈识别异常,拦截文件管理器、命令执行操作
      • 基于用户输入识别,部分样本可直接拦截,e.g
    • PHP - 拦截异常的回调操作,e.g array_map("system", $whatever)

      • 具体拦截哪些回调,请参考 openrasp.callable_blacklists 默认配置

        BUG 修复

    • 由 @计算姬 反馈

      • SQLi算法#1 - 当用户输入为纯数字时,且多次出现在SQL语句中,会产生误报,已经解决

    0.24 版本 - 2018.2.2

    BUG 修复

    • 自动安装程序

      • 解决无法识别 JBoss 4.0.3 的问题

        其他变更

    • 抓取 RASP.sql_tokenize 错误信息,并打印到 plugin.log


    0.23 版本 - 2018.1.23

    重大变更

    • 删除 reflection hook 点

      • 部分框架会大量调用反射,影响性能
      • 我们测试了一些金融业务,新版性能损耗由 10% 下降到 5%
      • 基于反射的检查,移动到 command hook 点,检测能力不变

        算法改进

    • SSRF 检测算法增强,增加更多常用域名检测


    0.22 版本 - 2018.1.17

    重大变更

    • 对于Java版本,SQLi/SSRF 检测算法改为Java原生实现,进一步提高性能
      • 通过在插件修改 algorithm.config 配置来控制检测逻辑
    • 开源协议由 BSD-3 切换为 Apache License 2.0,方便商用
    • 修改 context.parameter 获取逻辑
      • 当JSP脚本读取过参数,JS插件才能读取到。这样可以减少误报,还可以提高SQLi算法#1的性能
    • 支持过期日志自动删除功能,默认保留最近30天日志

      • 通过给 log4j 1.X 打补丁来实现
      • 升级前,用户需要手动删除 rasp/conf/rasp-log4j.xml,程序会在启动时,自动生成新的

        新增功能

    • 支持 JBoss 7.X

    • 支持在响应里插入 HTML 代码,可用于检测 CSRF/后台盲打,该功能默认关闭
    • rasp.properties 里的配置选项,除了 hooks.ignore 以外,开始支持动态更新,即修改后立即生效
    • 拦截攻击时,支持自定义响应状态码
      • 默认 400
    • 安全基线
      • 支持 Tomcat Directory Index 检查
    • 预编译JS代码,启动时间由原先的 8s 下降到 3s 左右
    • 增加调试开关,用于收集hook点进入次数、时间消耗等等

      算法改进

    • 正式支持 SSRF 漏洞检测,包括以下三种场景

      • URL.openConnection
      • commons-httpclient
      • httpclient

        API 变更

    • RASP.config() 接口改名为 RASP.config_set(),并增加相关调试日志

    • 增加 RASP.get_jsengine() 接口,用于获取JS引擎名称

      Bug 修复

    • #84: request.setCharacterEncoding 编码问题

    • 解决因为没有写权限,导致 rasp-log4j.xml 释放失败的问题
      • 在新版本里,RaspInstall 会主动修改 rasp 目录权限
    • 基线检查日志,增加调用堆栈信息
      • 当应用使用了高权限数据库账号,方便定位具体代码
    • 重写 catalina.sh 脚本修改逻辑,支持重复安装
      • 在修改的配置周围,增加类似 ### BEGIN OPENRASP ### 的标记

    0.21 版本 - 2017.12.6

    重大变更

    • 安全基线日志拆分到单独的文件里

      • 方便采集不同类型的日志
      • 升级前,用户需要手动删除 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 目录

    • RaspInstall 源代码开放
    • CVE漏洞覆盖列表开放

    0.20 版本 - 2017.10.26

    重大变更

    • 性能优化
      • 由于 jni 性能太差,我们决定使用 Mozilla Rhino 最新版本替换掉 j2v8
      • 在最坏的情况下,对服务器影响在 2% 左右,具体可查看性能测试报告
    • 放弃对 WebLogic 的支持

      API 变更

    • 增加 SQL tokenize 接口: RASP.sql_tokenize

    • 增加 SESSION 修改接口: context.session.getSession / context.session.setSession
    • readFile 接口,当文件不存在时,将不再调用插件

      Hook 点变更

    • 增加 webdav hook 点,可检查 MOVE、COPY 操作

      拦截日志变更

    • 增加 HTTP Referer 字段

    • 增加 request_id 参数,用于标识一个攻击
    • 增加 event_type 字段,用于标志日志类型
    • attack_time 字段改名为 event_time
    • attack_params 字段改为 JSON 形式(以前是字符串,需要重新配置ES mapping)

      新增功能

    • 支持自定义拦截页面

      • 通过 block.url 配置
      • 默认是小恐龙页面
    • 增加服务器安全基线检查功能,目前仅支持 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 开放
    • 敏感文件下载漏洞检测

      其他改动

    • JBoss XXE Hook 点次数优化,提高性能


    0.13 版本 - 2017.09.22

    Bug 修复

    • 当JS插件发生运行时错误,不应该打印报警日志
    • JS插件出错时,在 plugin.log 打印详细堆栈和错误信息

    0.12 版本 - 2017.09.14

    新增功能

    • 增加一个异常流识别,当某些类通过反射进行调用时,会触发插件检测逻辑

    0.11 版本 - 2017.09.13

    Bug 修复

    • 增加 doFilter hook 点,修复 struts 系列框架下,无法检测漏洞的问题

    0.10 版本 - 2017.08.18

    新增功能

    • 支持多种 Java 服务器、数据库服务器
    • 支持多种 SIEM 应用
    • 完成第一版官方检测插件
    • 支持多个 hook 点

    原文: https://rasp.baidu.com/doc/release/main.html