天天看點

“軟體移植”如何修複受損代碼?

何謂軟體移植?它們如何修複受損代碼?它會在企業軟體生命周期中占據一席之地嗎?此外,它們是否會導緻更多的軟體漏洞和安全漏洞?

michael cobb:軟體開發人員喜歡從網上複制和粘貼密碼。不管是關于一個函數如何工作的、一個代碼片段還是多行開源庫。這節省了大量的時間和金錢,且可以讓開發人員能快速添加特性和功能,而無需從頭開始建立。

在開發一個應用時,開發團隊可以很輕易地使用從網上找來的一百種以上的開源庫、架構和帶有代碼片段的工具。《2014 sonatype開源開發調查》發現,一個典型應用的90%都是由開源元件“組裝”而成的,其中有很多也帶有已知的安全漏洞。

這是一個十分嚴重的問題:同樣的受損代碼可被成千上萬的應用重複使用。實際上在最近的owasp前10名應用程式漏洞清單上這已經顯現出來。

為了解決這一問題,麻省理工學院的研究人員想出了一種方法——用從其他運作正确的程式的代碼替代受損代碼,這是最佳的一種自我完善的模式。他們的系統被稱作codephage,它能識别并解決常見的程式設計錯誤,例如越界通路、整數溢出和“除以0”的錯誤。

codephage通過分析受損代碼如何處理資料不會造成奔潰或故障以及會造成失誤的代碼來工作的。然後會将帶有錯誤的輸入内容回報給原來的程式并記錄究竟是哪些檢查并限制其安全地處理輸入,通常都是一個函數或審查輸入資料的程式。之後檢查一下嵌入的代碼是否已經修正這個錯誤。如果還沒有,它會繼續尋找兩個程式在處理輸入方面的差異。codephage不需要通路來源應用的開源代碼,它能夠從已用程式設計語言寫好的應用中開啟檢查,而不是從正在修複的程式中。

對各種常用開源程式(在這些程式中他們包括錯誤輸入的産生器diode已被發現存有漏洞)進行早期測試看上去是非常有前景的,每次在2~4個來源應用中使用,受損代碼可在2~10分鐘解決。

因為很多編碼時間可確定資料輸入不會幹擾到程式的預期流動,codephage能夠通過在開發過程中自動糾正代碼錯誤進而節省開發時間。作為一個自動代碼分析和修複工具,codephage前途無量,企業開發團隊可時刻關注其動向,如果有可能的話将其納入到自己的建構過程中。如果開發人員棄安全代碼實踐于不顧,而隻是依賴将其嵌入至重要安全檢查中,那麼這将是對該技術的濫用。

本文轉自d1net(轉載)

繼續閱讀