當您打開一個您最近可能下載的項目時,Visual Studio 2013會簡要地警告您只能打開可信來源的項目。開放項目有哪些風險?在編譯之前,項目能否對您的系統造成任何損害,並且可能造成什麼樣的損害?在真正從「不可信」來源開放項目之前,您是否應該瞭解哪些指標? (不,我能想到的)Visual Studio中不可信任的項目?
回答
攻擊面Visual Studio中
有Visual Studio中的許多攻擊向量。所有這些都是通過設計。我們的開發人員希望在構建過程中完全控制我們的系統。不幸的是,當我們說「我想刪除構建中的緩存目錄的內容」,這也意味着惡意項目文件可以從幾乎任何地方刪除任何東西。或更糟。妥協是「嘿,我們已經給你王國的鑰匙,但我們不承認這個項目,你確定要打開這個嗎?我們不負責,如果它做了一些愚蠢的事情」警告你提到的消息。
現在考慮許多開發人員以管理員身份運行Visual Studio。
下面是其中一些攻擊媒介:
預處理和後生成事件
在它最簡單的形式,不可信的項目可以執行預生成事件,將刪除文件。或更糟。幾乎任何事情都可以在Build事件中執行。這是編譯時發生的101個事情。在項目打開
處決
Visual Studio項目文件只不過是大的MSBuild配置的更多。當您打開一個項目時,Visual Studio會執行一些MSBuild目標,所有這些目標都支持該工具。這些目標包括Compile,ResolveAssemblyReferences,ResolveCOMReferences,GetFrameworkPaths和CopyRunEnvironmentFiles。如果存在這些目標中的任何一個,則其中的任務也被執行。刪除文件,或更糟。
見:在http://msdn.microsoft.com/en-us/library/ms171468.aspx
智能感知「設計時執行」
上面提到工具的 部分包括智能感知,其內的MSBuild執行Compile
任務;必須執行CSC/VBC才能獲得所有智能感知功能。由於智能感知的性質,這項任務在您工作時會重複執行,而不是上面剛開始運行的機會。
請參見:「設計時智能感知」在http://msdn.microsoft.com/en-us/library/ms171468.aspx
在MSBuild的其他地方隱藏
有其他常規的MSBuild目標,你將手動整個一天執行,包括建立一個海洋,重建,測試,和清潔。是的,請記住,即使clean
是構建目標,因此Clean
可能會刪除的不僅僅是您的舊\bin
目錄。
的NuGet
惡意項目也可以經由暴露的NuGet系統。雖然軟件包還原不會成爲問題,但packages.config
可以指定不同的存儲庫源。然後,當你安裝一個新的軟件包,比如install-package jquery
時,NuGet會從不可信的替代品中,而不是從nuget.org中檢索到jQuery軟件包。這個惡意的jQuery包可以包含各種其他'好東西',它將作爲軟件包安裝的一部分來執行。
這不是NuGet的安全漏洞,因爲「你」指定了一個備用包源;這是通過設計,例如擁有自己內部軟件包存儲庫的公司。
你可以做什麼?
在一天結束時,你能做些什麼呢?答案的確是不打開不可信任的項目。該項目的packages.config
文件可以在打開之前進行分析,但是大的曝光是通過MSBuild進行的。除非你非常擅長閱讀MSBuild架構,否則我會明確指出。
- 1. Visual Studio項目不可見
- 2. Visual Studio 2010中:項目項不可用
- 3. Visual Studio 2012不加載任何項目
- 4. 在Visual Studio中創建可信的MSI安裝項目?
- 5. Visual Studio工具箱項目不可用
- 6. 的Visual Studio MSBuild任務項目依賴
- 7. 在Visual Studio中的web項目選項是不可用
- 8. Visual Studio項目已加載信息
- 9. 的Visual Studio 2010項目到Visual Studio 2012
- 10. 在VS2010中不可信任的項目位置
- 11. 如何強制Visual Studio信任解決方案中的所有項目?
- 12. Visual Studio 2010中:Web項目
- 13. Visual Studio中 - 啓動項目不保存
- 14. 在Visual Studio項目
- 15. Visual Studio CLR項目
- 16. Visual Studio項目GUIDS
- 17. DotNetNuke Visual Studio項目
- 18. Visual Studio中的項目依賴項
- 19. Visual Studio不顯示SharePoint項目選項
- 20. Emberjs項目和Visual Studio/Visual Studio代碼
- 21. Visual Studio項目目錄
- 22. 對Visual Basic項目的編程訪問不受信任 - Excel
- 23. Xamarin Studio/Visual Studio Broken - 項目中不存在目標「Build」。 (MSB4057)
- 24. 如何將Visual Studio 2013項目降級到Visual Studio 2008項目?
- 25. 將Visual Studio 7.1項目轉換爲Visual Studio 9項目?
- 26. Visual Studio的Web項目不會對VS2015
- 27. 建立在Visual Studio中的任何項目的ffmpeg 2010
- 28. 空的Visual Studio項目?
- 29. Visual Studio的安裝項目
- 30. 關於visual studio中項目文件的信息?
很好的答案,謝謝!我打算讓問題持續一段時間,看看其他人是否有其他想法,我認爲這是一個有趣的主題。 – Corey