2010-02-15 46 views
3

我被要求監督審查一些第三方代碼(在這種情況下爲Freeware C#Sharepoint webpart),然後將其納入企業內部網絡。最大的擔憂是隱藏在Web部件中的惡意代碼,該代碼會竊取數據/將信息發回給Web部件創建者/等,次要擔心會導致性能問題。查看安全問題的第三方代碼

我們有源代碼,在這種情況下,只有不到2000行的代碼,所以手動運行它並不難,並確保一切正常。對於更大型的工作來說,需要採取什麼樣的方法來審計代碼,以確保儘可能安全?我們將來需要爲更大的代碼庫做到這一點。

回答

1

將其分解成模塊並單獨檢查它們。

查看每種方法以確保其按廣告執行。從只進行API調用的最底層的方法開始 - 一旦你已經證實那些做了他們所說的話,那麼你就可以驗證調用它們的方法,而不用擔心它們到底做了什麼。

解決此問題的一種方法是查看「盲目」方法,寫下您認爲它的工作方式,然後將其與文檔中所述內容進行比較。

1

的文章那麼,你不在乎,如果代碼是不安全的,你會得到被中國黑客攻擊?通常,當人們進行代碼審查時,他們關心的是受到外部人士的攻擊,而大多數商業工具反映了這一點。請記住,黑客經常利用許多不同類型的漏洞而無需訪問源代碼。針對C#的最佳商業靜態分析工具是Fortify。不幸的是,如果有人正在編寫後門,它可能看起來像任何東西,甚至手動代碼審查可能會錯過這個問題。

在劫持信息的情況下,我建議創建一個構建驗證測試,查看網絡流量。構建驗證測試對於在開發過程中維護穩定的代碼庫非常重要。儘管粗略的測試應用程序,你想看看是否有網絡流量被設置爲未知的服務器。你甚至可以運行這個構建驗證日/月/年來查看應用程序是否以意想不到的方式運行。毋庸置疑,這款特定的貓捉老鼠遊戲相當棘手,我不相信可以有一個防彈解決方案。

2

如果你真的相信有一個邪惡的後門甚至有一個遠程的可能性,你不應該使用代碼。這是一種讓我感到困惑的企業任務。即使它是免費的,它也永遠不值得冒這個險。

這就是說,來自信譽良好的來源的代碼可能比您自己的代碼更安全,因爲它在更大和更多樣化的用戶羣中進行了測試(希望)。如果審查僅僅是爲了安撫管理和代碼運行在一個虛擬機,守護自己與運行時的安全功能:

如果代碼編譯本地或解釋,事情變得更加棘手。尋找無意義的圖書館內容:圖書館中的TCP與網絡無關,文件IO不屬於它......再一次,如果我沒有,我個人不會觸及它100%的信念。

至於性能,請像處理應用程序的其他部分一樣對待。在知道存在問題之前不要進行優化。如果您看到性能問題,並且您的跟蹤將您帶到第三方代碼,請進一步追蹤並找到問題。如果問題看起來很重要且怪誕,則不要使用該代碼。這可能暗示着其他不好的事情。