開源最前線(ID:OpenSourceTop) 猿妹編譯
連結:https://www.microsoft.com/security/blog/2020/01/16/introducing-microsoft-application-inspector/
現代軟體開發通常涉及數百個元件來構建應用程式,這些元件可能是來自組織中的另一個團隊,外部供應商,或開源社群中的某個人編寫的,這樣做有很多好處,諸如釋出時間、品質和互操作性,但有時會帶來隱藏的風險。
儘管你信任自己的團隊,但是他們編寫的程式碼通常只佔整個應用程式的一小部分,你對這些外部元件了解多少呢?從某種程度來說,你對這些元件的信任程度和團隊是一樣的。
為了提高軟體的品質,避免開源軟體的固有風險,微軟開源了其內部使用的原始碼分析器是 Application Inspector,可以識別軟體中的一些特性和元資料。
Application Inspector與典型的靜態分析工具的不同之處在於,它並不侷限於檢測糟糕的程式設計實踐,相反的,它會在程式碼中顯示一些有趣的特性,它會根據 500 多種規則模式報告發現的內容,並進行特徵檢測,包括影響安全性的特徵,例如加密技術的使用等。
這邊,我們一起來看一下這段程式碼:
我們可以看到一段程式程式碼,它從URL下載內容,將其寫入檔案系統,然後執行shell命令以列出該檔案的詳細資訊。如果通過Application Inspector執行此程式碼,它就會識別出以下內容:
FileOperation.WriteNetwork.Connection.HttpProcess.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)感興趣的夥伴們趕緊嘗試下吧。