跳转至

检测

Ostorlab 的扫描功能采用静态分析以实现高攻击面覆盖率,并使用动态分析来确保生成无误报的报告。Ostorlab 会针对在动态分析期间收集到的系统后端进行测试,以识别服务器端漏洞。

静态分析

Ostorlab 的静态分析采用多种技术来识别漏洞:

配置检查 (Configuration Checks)

对不安全的设置进行配置检查。这些设置包括 Android 和 iOS 的原生参数,如 AndroidManifest.xml 中的 debug 和 backup 模式,以及 Cordova 框架的参数,例如 Cordova 的白名单 (whitelist) 或 debug 模式。

有关完整的检查列表,请参阅知识库部分。

第三方依赖项 (3rd Party Dependencies)

第三方依赖项功能对所有受支持框架(如原生 Android、iOS Cocoapods、Cordova 插件、Xamarin DLL 等)的应用程序依赖项进行指纹识别。

第三方依赖项功能还会对静态编译的依赖项进行指纹识别,并识别出大量的库,如 OpenSSL、Zlib、Libjpeg、Libpng、Xerces 等。

识别出的指纹会与已知漏洞数据库进行匹配。该数据库包含公开报告的漏洞,以及通过分析公共源代码仓库发现的未报告漏洞列表。

可通过 VulnDB 菜单访问漏洞数据库,并可按日期、名称和版本搜索条目。

硬编码凭据 (Hardcoded Secrets)

静态引擎会搜索硬编码凭据 (Hardcoded Secrets),例如不应部署在移动应用中的 API 密钥 (API Keys),以及密码、令牌、加密密钥和初始化向量 (IV)。

识别出的凭据将通过检查其权限、角色和可访问的服务来测试其有效性和影响。

污点分析 (Taint Analysis)

Ostorlab 的核心静态技术是其污点引擎,该引擎可计算污点数据在多种可能的执行路径上是如何传播的。Ostorlab 的静态污点引擎将面向对象信息和类型信息纳入考量,以提供快速、高效且几乎零误报的污点信息。随后,数十条规则会利用这些污点信息来识别漏洞,如 SQL 注入、命令注入或使用硬编码密钥。

architecture

动态分析

Ostorlab 会在一个经过插桩处理的沙盒中运行移动应用程序,以跟踪其与外部环境(如网络、文件系统、钥匙串 (keychain)、API 等)的所有交互。

插桩引擎会跟踪对标准 API 的调用,以识别不安全的参数,例如弱加密方案、不安全的 RPC 调用、从不可信路径加载代码,或使用用户输入执行命令。

Ostorlab 的插桩功能可以访问加密流量,无需绕过 SSL 证书绑定 (SSL pinning)。收集到的后端信息随后将被重新用于执行后端分析。

动态插桩同时使用了系统插桩技术(如用于文件系统访问的 Fanotify)以及一个利用 Android 和 iOS 的 JDWP 及调试 API 构建的定制无侵入式运行时插桩引擎。

与需要自定义内存操作的内联挂钩 (inline hooking) 等侵入式方法相比,此方法非常稳健。它为收集运行时信息(尤其是对于使用 Objective C 和 Swift 构建的 iOS 应用程序)提供了更多能力,并且无需在每次发布可能修改底层系统运行时的系统新版本时进行持续维护。

后端 (Backend)

Ostorlab 针对在动态分析期间收集到的后端信息进行测试,以识别服务器端漏洞。该分析既包括被动分析(如检测是否存在不安全的 HTTP 标头),也包括主动分析(如检测 SQL 注入或 XXE 漏洞)。

Ostorlab 使用了先进的跨站脚本 (XSS) 扫描器代理,该代理结合了基于 Chrome 的动态测试和强大的多语言 payload。该扫描器还使用了一些方法,例如将 JavaScript Proxy 对象的插桩集成到 Web 应用程序的初步分析中,从而简化对隐蔽 XSS 向量的检测。

Ostorlab 的主动测试采用概率方法来识别漏洞。这种方法的优势在于:无需发送可能被拦截、仅限于特定操作系统、可能影响后端稳定性或触发入侵检测系统及应用防火墙的完整 payload。

此外,Ostorlab 还自动检测来自 CISA KEVGoogle Tsunami 以及创新的 Ostorlab Asteroid 项目等知名平台的高危且被积极利用的严重漏洞。

Ostorlab 后端分析引擎支持大量的序列化方案,并支持嵌套的序列化注入。

概率测试与安全的速率限制 (rate-limiting) 相结合,可保护后端系统免受意外故障和不必要的拒绝服务攻击,同时提供保证无误报的报告。