又一個編程神器來了!微軟開源軟件特征源碼分析工具
現代軟件開發通常涉及數百個組件來構建應用程序,這些組件可能是來自組織中的另一個團隊,外部供應商,或開源社區中的某個人編寫的,這樣做有很多好處,諸如發布時間、質量和互操作性,但有時會帶來隱藏的風險。
盡管你信任自己的團隊,但是他們編寫的代碼通常只占整個應用程序的一小部分,你對這些外部組件了解多少呢?從某種程度來說,你對這些組件的信任程度和團隊是一樣的。
為了提高軟件的質量,避免開源軟件的固有風險,微軟開源了其內部使用的源碼分析器是 Application Inspector,可以識別軟件中的一些特性和元數據。
Application Inspector與典型的靜態分析工具的不同之處在于,它并不局限于檢測糟糕的編程實踐,相反的,它會在代碼中顯示一些有趣的特性,它會根據 500 多種規則模式報告發現的內容,并進行特征檢測,包括影響安全性的特征,例如加密技術的使用等。
這邊,我們一起來看一下這段代碼:

我們可以看到一段程序代碼,它從URL下載內容,將其寫入文件系統,然后執行shell命令以列出該文件的詳細信息。如果通過Application Inspector運行此代碼,它就會識別出以下內容:
- FileOperation.Write
- Network.Connection.Http
- Process.DynamicExecution
在這個小例子中,手動檢查代碼片段以識別那些相同的功能很簡單,但是許多組件包含成千上萬行代碼,現代Web應用程序經常使用數百個這樣的組件。而Application Inspector就是專門為大規模的應用程序設計。
Application Inspector是一個跨平臺的命令行工具,可以生成多種格式的輸出,包括JSON和交互式HTML。以下是HTML報告的示例:

上方報告中的每個圖標代表源代碼中標識的功能。展開功能后單擊鏈接,你就可以查看相關代碼。
Application Inspector 包含一個可過濾的置信度指示器,可幫助最大程度減少誤報匹配以及可自定義的默認規則和條件匹配邏輯,其帶有數百種功能檢測模式,涵蓋了許多流行的編程語言,并且對以下類型的特征提供了良好的支持:
- 應用程序框架(開發、測試)
- 云/服務 API(Microsoft Azure、Amazon AWS 和 Google Cloud Platform)
- 密碼學相關(對稱、非對稱、哈希和 TLS)
- 數據類型(敏感的個人身份信息)
- 操作系統功能(平臺標識、文件系統、注冊表和用戶帳戶)
- 安全功能(身份驗證和授權)

目前,Application Inspector 已經在Github上獲得266個Star,23個Fork(Github地址:https://github.com/Microsoft/ApplicationInspector)感興趣的伙伴們趕緊嘗試下吧。