✏️ 贡献者
- Dillon Franke (@dillonfranke)
- Michael Maturi (@a-marionette)
📝 博客
https://www.mandiant.com/resources/route-sixty-sink-launch
⚓ Route Sixty-Sink
Route Sixty-Sink 是一款开源工具,它通过自动化的 source-to-sink 分析,使防御者和安全研究人员都能快速识别任何 .NET 程序集中的漏洞。
识别应用程序二进制文件或源代码中的漏洞往往是一个漫长而乏味的过程。为此,source-to-sink 分析 是一种数据流分析形式,它试图识别作为危险函数调用(即“sink”)参数传入的用户输入。
❓ Route Sixty-Sink 解决什么问题?
虽然有效,但正确的 source-to-sink 分析是一个耗时且手动繁琐的过程,通常因以下原因而不可行:
- 复杂输入追踪: 识别应用程序的输入可能很困难,尤其是在使用 MVC 架构的 Web 应用程序中。Route Sixty-Sink 处理各种各样的路由和输入解析场景,从而自动化这一过程。
- 应用程序规模: 大型 C# 应用程序很难通过手动分析获得完整的代码覆盖率。Route Sixty-Sink 自动化了这一过程,使大多数程序都能在几秒内完成分析。
- 嵌套 Sink: 隐藏在接口、扩展类或一系列嵌套函数调用中的 sink 可能会被忽略。Route Sixty-Sink 通过创建所有类和方法调用的调用图,然后递归跟踪这些调用来识别这些 sink。
💪 它是如何工作的?
Route Sixty-Sink 跟踪用户输入流经任何 .NET 程序集的过程,并判断它是否作为参数传递给危险函数调用(即“sink”)。Route Sixty-Sink 通过两个主要模块实现这一功能:
- RouteFinder,用于枚举 ASP Net Core MVC 和经典 ASP 页面 Web 应用程序中的 API 路由。
- SinkFinder,它接受一个入口点,并创建所有类和方法调用的调用图。然后,它会查询字符串、方法调用和类名以查找“sinks”。
通过将这两个功能模块结合起来,Route Sixty-Sink 能够快速识别使用黑盒或手动静态分析方法难以发现的高保真漏洞。
⛑️ 安装、用法和示例
有关用法,请参阅 Wiki Page 页面。