Pinpoint 2.0正式发布

Pinpoint 2.0从分析能力,交互体验,功能完整性,以及系统适应性为您带来全新体验!

主要改进:

(1)完善的权限管理系统,提供用户,用户组,用户角色等功能,满足代码及分析任务的隔离及共享需求

(2)新增智能构建支持,可以自动识别如maven等10种常见的C/C++/JAVA构建流程,简化配置流程

(3)新增QNX编译器q++和qcc支持

(4)完善的中文编码支持,包括GBK,GB2312,和GB18030

(5)修复8种类型的误报,7种类型的漏报,3种类型的报告提示不清晰问题,提升包括空指针,资源泄露等7类缺陷检测

(6)新增Mybatis框架和Java库函数的建模

(7)新增6个安卓数据泄露检查器,更好的保护移动端的隐私数据

具体改进如下:

1. 完善的权限管理系统,满足代码及分析任务的隔离及共享需求

  • ● 增加基于角色的权限控制系统。该权限系统包括三个部分:用户,用户组,角色。每个用户就是一个Pinpoint账号,可以属于一个或多个用户组。一个用户组可以拥有一个或多个角色,而每个角色可以配置系统的各种权限,以及具体每个项目的增删改查权限。界面如下图所示:
Pinpoint 2.0 is officially released

2. 新增智能构建支持,简化配置流程

  • ● 新增智能构建逻辑,如下图所示
smart-build.png
  • 打开只能编译,我们会自动识别和配置常见编译构建方式,支持的构建方式如下(注:如有特殊参数需手动配置):
    • ● make
    • ● cmake
    • ● scons
    • ● autotool
    • ● bazel
    • ● maven
    • ● gradle
    • ● ant
    • ● ninja
    • ● 名叫build.sh的自定义编译脚本

  • 若无法自动编译上述项目,则会启动内置的模糊编译引擎去编译项目,并对可编译部分进行分析。
  • ● 支持Java代码现场编译再分析,需要自动配置编译命令或采用智能编译模式
JAVA-compile.png

3. 支持QNX的C/C++编译器qcc和q++

  • ● 同时改善对使用C++17标准构建的QNX工程的兼容性

4. 完善的中文环境支持,支持更多的系统环境

  • ● 支持locale为GBK,GB2312,GB18030,UTF-8等的中文环境。
  • ● 上传的zip包包含中文编码的文件名,不过可能显示为乱码。

5. 修复误报漏报,提升分析质量

  • ● 提升精度:
    • ● 资源泄露问题
      • ● 修复资源泄露检测中由JAVA反射引起的误报
      • ● 修复资源泄露检测中由C++智能指针引起的误报
      • ● 修复由第三方库类型不明引起的资源泄露误报
      • ● 修复由误判不抛exception的函数引起的资源泄露误报
      • ● 修复JAVA资源泄露资源打开失败引起的误报

rlc.png

    • ● 空指针问题
      • ● 解决变量和null比较后被重新赋值引起的误报,如下图所示的str变量,不会再在str.length()处报告空指针问题
CND.png

    • ● 缓冲区溢出
      • ● 修复memcpy/memset相等长度的缓冲区溢出误报问题
  • ●提升召回:
    • ● 资源泄露问题
      • ● 修复判定数据无法跟踪的策略,大量增加JAVA资源泄露召回
      • ● 修复由未处理的异常导致的资源泄露误报
rlc_ex_cn.png

    • ● 跨站脚本、SQL注入等安全类问题
      • ● 添加建模3个可能引起注入的数据源
      • -> javax.servlet.http.HttpServletRequest.getQueryString
      • -> javax.servlet.http.HttpServletRequest.getParameterValues
      • -> javax.servlet.http.HttpServletRequest.getHeader
    • ● XML实体注入问题
      • ● 添加外部输入流进行XML解析的检测逻辑
xxe.png
    • ● 硬编码类问题
      • ● 改进变量名和熵值的匹配逻辑,找到更多有价值的硬编码字符串
      • ● 硬编码词典大小写匹配方法改进,避免误判
    • ● 内存多次释放
      • ● 建模zfree函数,修复由zfree引起的漏报
  • ● 改进报告提示
    • ● 改进抛异常分支对应的报告提示,明确标明有异常抛出
tipex.png
    • ● 修复报告提示中中的一些不通顺及语法错误的问题
    • ● 报告提示中标识报告类型及触发条件
tip.png

6. 新增Mybatis框架和Java库函数的建模

  • ● 新增支持mybatis的配置代码。如下图所示,通过mybatis配置了一个getUser函数,并接受一个外部数据id,同时用${id}的方式拼入SQL语句:
mybatis2.png
  • 该getUser函数是有SQL注入风险的,比如下图,我们把main函数的参数id传递给getUser,其中id是用户输入的数据,就可能造成注入:
mybatis1.png
  • ● 对JDK库做了建模,可以作为额外数据包提供,用于减少误报。如下代码将不产生误报:
stringUtils.png

7. 新增6个安卓数据泄露检查器,更好的保护移动端隐私数据

  • ● 敏感数据泄露: 获取联系人信息
  • ● 敏感数据泄露: 获取联系人电话
  • ● 敏感数据泄露: 获取邮箱
  • ● 敏感数据泄露: 获取视频文件
  • ● 敏感数据泄露: 获取图片
  • ● 敏感数据泄露: 获取音频文件