何謂軟件移植?它們如何修復受損代碼?它會在企業軟件生命周期中占據一席之地嗎?此外,它們是否會導致更多的軟件漏洞和安全漏洞?
Michael Cobb:軟件開發人員喜歡從網上復制和粘貼密碼。不管是關于一個函數如何工作的、一個代碼片段還是多行開源庫。這節省了大量的時間和金錢,且可以讓開發人員能快速添加特性和功能,而無需從頭開始創建。
在開發一個應用時,開發團隊可以很輕易地使用從網上找來的一百種以上的開源庫、框架和帶有代碼片段的工具。《2014 Sonatype開源開發調查》發現,一個典型應用的90%都是由開源組件“組裝”而成的,其中有很多也帶有已知的安全漏洞。
這是一個十分嚴重的問題:同樣的受損代碼可被成千上萬的應用重復使用。實際上在最近的OWASP前10名應用程序漏洞列表上這已經顯現出來。
為了解決這一問題,麻省理工學院的研究人員想出了一種方法——用從其他運行正確的程序的代碼替代受損代碼,這是最佳的一種自我完善的模式。他們的系統被稱作CodePhage,它能識別并解決常見的編程錯誤,例如越界訪問、整數溢出和“除以0”的錯誤。
CodePhage通過分析受損代碼如何處理數據不會造成奔潰或故障以及會造成失誤的代碼來工作的。然后會將帶有錯誤的輸入內容反饋給原來的程序并記錄究竟是哪些檢查并約束其安全地處理輸入,通常都是一個函數或審查輸入數據的程序。之后檢查一下嵌入的代碼是否已經修正這個錯誤。如果還沒有,它會繼續尋找兩個程序在處理輸入方面的差異。CodePhage不需要訪問來源應用的開源代碼,它能夠從已用編程語言寫好的應用中開啟檢查,而不是從正在修復的程序中。
對各種常用開源程序(在這些程序中他們包括錯誤輸入的產生器DIODE已被發現存有漏洞)進行早期測試看上去是非常有前景的,每次在2~4個來源應用中使用,受損代碼可在2~10分鐘解決。
因為很多編碼時間可確保數據輸入不會干擾到程序的預期流動,CodePhage能夠通過在開發過程中自動糾正代碼錯誤從而節省開發時間。作為一個自動代碼分析和修復工具,CodePhage前途無量,企業開發團隊可時刻關注其動向,如果有可能的話將其納入到自己的構建過程中。如果開發人員棄安全代碼實踐于不顧,而只是依賴將其嵌入至重要安全檢查中,那么這將是對該技術的濫用。