我们的 AI 引擎 Neutron 在加州大学伯克利分校的 CyberGym 基准测试中取得了 96.75% 的成绩。 了解更多

工程

工程

Ostorlab 的检测引擎

Ostorlab 所提供检测能力的概览

Ostorlab 的漏洞检测技术依赖于 3 个关键组件:静态分析引擎、动态与行为分析引擎,以及后端分析引擎。

检测技术列表
分析列表

静态分析引擎执行以下功能:

  • 配置检查:例如检查应用是否禁用了调试模式、是否具有正确的生产环境框架设置(如安全的 Apache Cordova 白名单),或是否具有安全的网络安全策略。

  • 依赖检查:重点识别依赖项及其版本,既可以通过某些框架贴心提供的版本文件,也可以通过在二进制文件中检索由 Ostorlab 团队手工编写的特定标识符来实现。随后会扫描这些依赖项是否存在已知漏洞。

  • 污点分析:Ostorlab 提供的高级且独特的功能之一,是一个高性能、可用于生产环境的污点分析引擎。该引擎覆盖 Android 字节码等一系列技术,能够对整个应用进行分析,搜寻隐藏在数十层方法调用之后的漏洞。这些漏洞包括使用不安全的加密(如使用 ECB 分组模式或 DES 算法)、通过 URL scheme 或 Content Provider 暴露的 SQL 注入,以及通过 Service 或 Content Provider 暴露的命令执行。

安全报告视图
报告

动态分析引擎执行以下几项操作:

  • 应用准备:重新打包应用以便分析,包括启用调试模式、对应用重新签名,以及禁用可能妨碍分析的问题检查。

  • 设备准备:将应用安装到真机上,并将应用设置为等待调试器连接,Android 和 iOS 均适用。Ostorlab 依靠真机来保证性能和可复现性。

  • 调试协议分析:使用 JDWP 或 LLDB 等调试协议对应用进行插桩。Ostorlab 维护着自己的技术栈,从而能够在底层与应用交互。插桩是指在关键 API 上设置跟踪点,这些 API 被称为 source(不可信输入的来源)和 sink(可能导致漏洞的位置)。出于稳定性和可扩展性的考虑,Ostorlab 依靠调试协议进行分析,而不是采用内存内分析。与通过操作内存来 Hook API 相比,调试协议的风险更低,而且在新的操作系统版本中也能保持稳定。调试协议会拖慢应用,带来性能损耗,但在漏洞检测的场景下,这种损耗仍是可以接受的。可扩展性则来自调试器所提供的功能,例如理解 Swift 或 Objective-C 的内存布局,从而可以编写清晰简洁的插桩代码。

  • 跟踪与分析:实时收集跟踪数据并分析其中已知的漏洞模式,例如以不安全的方式调用加密 API,或使用硬编码密钥。此步骤还会通过直接 Hook TLS/SSL API 和 Socket API 来收集流量。这种方法可以绕过 SSL Pinning。收集到的流量随后被发送到后端分析引擎,报告示例请见此处。

  • Monkey 测试:测试 Monkey 开始与应用交互,或者使用一组启发式规则来检测身份验证页面,或者在应用中随机点击。对于复杂的界面交互,则使用 BDD 编写 UI 自动化规则来编排交互过程。

攻击面可视化
攻击面

UI 自动化规则配置
UI 自动化规则

后端分析引擎依靠动态分析来收集流量,然后执行以下操作:

  • 被动检测:通过分析请求和响应的属性(如正文和标头)来发现漏洞,例如缺失的 Cookie 属性、不安全的 CORS、根据推断出的版本识别存在漏洞的组件等。

  • 主动检测:Ostorlab 作为一款移动优先的安全扫描器,专注于理解移动应用中常用的多种序列化协议,例如 GraphQL 或 Protobuf。我们会对这些序列化协议进行模糊测试,以发现 SQL 注入、XXE、模板注入等漏洞。

这些阶段并非按顺序执行,因为每个阶段背后都有多个专门负责特定任务的微型 Agent。这些 Agent 通过共享总线进行通信,并采用基于事件的架构。

在每一项分析过程中,都会收集各种产物,例如应用截图、设备日志和反编译后的源代码。

测试产物视图
产物

这三个分析引擎全面覆盖了应用的攻击面,并弥补了每种分析单独使用时固有的不足。例如,静态分析能很好地覆盖应用的攻击面,但同时可能因复杂的执行路径或死代码而产生误报。动态分析通过观察真实行为,产生的误报要少得多,但无法保证完全覆盖应用的攻击面;而后端分析则检测后端固有的漏洞,在大多数情况下,该后端是专门为移动应用服务的。

标签:

SAST, DAST