微軟近日開源了其內部使用的軟件特征源碼分析工具 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提供了一個可過濾的指示器,以此來提供最小化的誤報率,並幫助研究人員自定義默認規則以及條件匹配邏輯。
現代軟件開發實踐通常需要基於數百個現有組件中構建應用,無論它們是由組織中的另一個團隊、外部供應商還是開源社區中的某個人編寫的。這樣雖然會帶來許多好處,比如加快開發進度、軟件質量與互操作性等,但同時也會帶來隱藏的復雜性和風險。
應對這種情況,微軟介紹其內部使用的工具是 Application Inspector,這是一個軟件特征源碼分析器,可以通過使用靜態分析和可自定義的基於 json 的規則引擎來識別軟件源碼特征,了解程序的功能。
此工具與傳統的靜態分析工具的不同之處在於,它不會嘗試識別“好”或“壞”的模式,而是會根據 500 多種規則模式報告發現的內容,並進行特征檢測,包括影響安全性的特征,例如加密技術的使用等。
在以下示例中,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