Fork me on GitHub

微软开源一款功能强大的软件源代码分析与审计工具 Application Inspector

微软近日开源了其内部使用的软件特征源码分析工具 Application Inspector。ApplicationInspector是一款功能强大的软件源代码分析与审计工具,它可以帮助研究人员识别和发现目标应用程序中的公众周知的功能以及源代码中有意思的特性,并清楚目标应用的本质特征以及实现的功能。

ApplicationInspector跟传统静态分析工具不同的是,它不会尝试去识别目标应用模式的好与坏,它只会报告它所检测到的应用程序模式,而且它会使用超过400种规则来完成检测,其中包含可能会影响应用程序安全性的一些模式,例如所使用的加密算法等等。ApplicationInspector会直接检查目标应用程序的源代码,而不是选择信任已有文档或安全建议,这对于分析开源项目或其他组件来说,能够提升准确率。

ApplicationInspector支持扫描各种编程语言,其中包括C、C++、C、Java、JavaScript、HTML、Python、Objective-C、GO、Ruby以及PowerShell等等,并且还支持扫描混合语言的文件。除此之外,ApplicationInspector还支持HTML、JSON和text等输出格式,默认输出报告格式为HTML。

值得一提的是,ApplicationInspector提供了一个可过滤的指示器,以此来提供最小化的误报率,并帮助研究人员自定义默认规则以及条件匹配逻辑。

image

现代软件开发实践通常需要基于数百个现有组件中构建应用,无论它们是由组织中的另一个团队、外部供应商还是开源社区中的某个人编写的。这样虽然会带来许多好处,比如加快开发进度、软件质量与互操作性等,但同时也会带来隐藏的复杂性和风险。

应对这种情况,微软介绍其内部使用的工具是 Application Inspector,这是一个软件特征源码分析器,可以通过使用静态分析和可自定义的基于 json 的规则引擎来识别软件源码特征,了解程序的功能。

此工具与传统的静态分析工具的不同之处在于,它不会尝试识别“好”或“坏”的模式,而是会根据 500 多种规则模式报告发现的内容,并进行特征检测,包括影响安全性的特征,例如加密技术的使用等。

image

在以下示例中,Application Inspector 将识别出以下功能:

  • FileOperation.Write
  • Network.Connection.Http
  • Process.DynamicExecution

这些功能可以告诉我们很多程序的相关信息。

Application Inspector 包含一个可过滤的置信度指示器,可帮助最大程度减少误报匹配以及可自定义的默认规则和条件匹配逻辑,其带有数百种功能检测模式,涵盖了许多流行的编程语言,并且对以下类型的特征提供了良好的支持:

  • 应用程序框架(开发、测试)
  • 云/服务 API(Microsoft Azure、Amazon AWS 和 Google Cloud Platform)
  • 密码学相关(对称、非对称、哈希和 TLS)
  • 数据类型(敏感的个人身份信息)
  • 操作系统功能(平台标识、文件系统、注册表和用户帐户)
  • 安全功能(身份验证和授权)

详情查看:

https://github.com/Microsoft/ApplicationInspector

https://www.microsoft.com/security/blog/2020/01/16/introducing-microsoft-application-inspector

posted @ 2020-04-04 23:34  张善友  阅读(906)  评论(1编辑  收藏