Lucas+Mearian+++楊勇
軟件組成清單可以幫助發現已知的漏洞,讓企業應用程序更安全。
隨著企業開發的定制應用程序越來越多——其中很多移動應用程序是移動優先策略的一部分,內部開發人員越來越有可能在無意中使用充斥著漏洞的開源代碼。
開發定制應用程序使企業能夠讓客戶——無論是內部用戶還是消費者,有更好的移動體驗,從而讓自己在競爭中脫穎而出。
與傳統的軟件開發不同,移動應用程序的開發更加復雜,特別是當公司開發服務器側網絡API或者客戶側本地富客戶端時。當把軟件集成到其他應用程序和系統中時也是如此。
網絡應用程序不僅能夠傳播底層弱點和漏洞,而且還給設備上敏感數據的安全存儲帶來了新問題。
Gartner公司研究總監Michael Isbitski說:“與傳統的應用程序設計相比,移動應用程序的設計、開發和安全方面的專業知識往往更為有限,并且在移動平臺更加分散。”
現在的應用程序很少是從頭開始編程的,特別是當軟件由公司之外的開發和運營部門開發的情況。開發人員通常去在線知識庫來獲取開源組件——作為構建模塊的代碼塊,組裝成定制移動應用程序。
免費的開源組件中存在大量漏洞
問題在于沒有對開源代碼進行審查,其使用會使企業和客戶出現漏洞。Heartbleed就是這種情況,它是2014年在OpenSSL庫中發現的漏洞。
Heartbleed對應用程序和操作系統(桌面和移動)、網絡設備和嵌入式系統都有廣泛的影響。
Isbitski說:“在某些情況下,它會一直存在,這可能是由于更新相關組件的技術限制,或者管理員疏忽所造成的。”
用于Java網絡應用程序的開源網絡開發框架Apache Struts,以及流行的JavaScript運行時環境Node.js最近都發現了漏洞。Isbitski說,如果被利用,Node.js漏洞可能導致受影響的應用程序具備拒絕服務(DoS)條件。
IDC的安全產品部項目副總裁Sean Pike說:“這里的問題是,人們一直是在網上隨機尋找自己需要的東西——而對于企業,隨機找到的軟件就有可能很快應用于為重要的企業系統提供支持。”
DDoS攻擊對企業可能是毀滅性的,而有的攻擊甚至可能危及生命。越來越多的醫院網絡和醫療設備采用了無線方式進行連接,例如起搏器和嵌入式胰島素分配器等,因此,發現漏洞并及時進行保護顯得尤為重要。
上個月,美國政府的醫療保健行業網絡安全工作組發布了一份關于怎樣提高網絡安全的報告。報告建議醫療設備制造和軟件開發方面應更加透明,以減少安全漏洞。
鑒于上個月有報道說在四臺起搏器編程機上發現了8000個已知的安全漏洞,因此,這一建議非常及時。
無論是商用貨架軟件(COTS)還是開源組件都不太安全——這仍然是安全專家們爭論的焦點。
開發人員從大型在線知識庫那里得到開源組件,這種組件通常采用Java、Python、Ruby等編程語言。開源軟件是開放的,可以詳細的對其進行檢查,在一個完整的應用中不會產生太多的問題。
Isbitski指出,但這不太適用于開發,這是因為它是“免費”使用的,或者沒有資金投入。COTS是封閉的,是設計專用的,攻擊者不太容易對其發起攻擊。但是經驗豐富的攻擊者仍然有辦法對商業軟件進行逆向工程剖析,找到弱點或者漏洞。
Isbitski說:“現在的應用程序開發有相當一部分采用了開源組件。開源代碼重用有助于縮短新軟件或者硬件的開發周期。它對安全編程也有好處,因為開發人員可以使用包含了安全和可信功能的標準化組件。”
去年,IDC預測應用程序安全是IT管理者們最關心的問題;雖然人們對這個問題很感興趣,但還沒有像研究機構那么重視。
Pike說:“這還沒有實現呢。我認為,其中有些直接與物聯網有關。我認為不良代碼造成了太多的物聯網故障,這將提高人們對這方面的認識。”
盡管如此,公司仍然對移動應用程序開發趨之若鶩,主要目的是改善業務。據Gartner對移動應用程序開發平臺的年度研究,2016年開發定制移動應用程序的企業數量大幅增長——其中有很多簡單的應用程序是用于處理業務流程。
漏洞檢查太少
2015年,約有60%的企業從事移動應用程序開發。據這項研究,去年這一數字猛增到73%左右。Maven中心知識庫是流行的Java開源代碼組件最大的知識庫,去年發現每15個下載的軟件中就有一個含有已知漏洞。
Derek Weeks是管理Maven中心知識庫的Sonatype的副總裁,也是DevOps的倡導者,他說:“目前還沒有對軟件開發進行充分的檢查,因此,不知道使用了什么,里面是不是有已知的漏洞。”
知識庫中存儲了二百萬個各不相同的開源Java組件,為全球大約1千萬名開發人員提供服務。去年,Sonatype響應了知識庫的520億次下載申請,比2015年的310億次有大幅上升。
Weeks說:“組件下載的年消費量有明顯的增加。全世界大約只有1千萬名Java開發人員,所以當您看到數以十億次的下載申請時,說明消費量非常大。而且,這也擴展到其他語言中。Python每年有數十億次下載。”
Weeks補充說:“這么多的下載并非壞事;但我們應該意識到有時候會下載不好的東西。”
軟件組成清單
那么怎么知道您使用的是有問題的組件呢?軟件開發人員和某些企業正在努力推動的一項工作是,促使美國聯邦政府要求提供軟件組成清單,類似于預包裝食品中的配料清單。與食品配料不同,軟件組成清單列出了所有的軟件組件。
組成清單通常會列出已知漏洞,以常見漏洞和弱點標識以及相關開源許可的形式標記出這些漏洞。
Weeks說:“如果您建立了缺陷列表,那么可以針對已知安全漏洞對其進行評估。市場上既有商用的也有開源的工具,您可以利用這些工具分析自己的應用程序,找到其中的組件,確定它們是否有任何已知的安全漏洞。如果有,那么您必須決定是否要在將其發送給客戶之前修復它們,或者讓客戶知道存在已知的安全漏洞。”
2007年以來,Maven中心知識庫開源組件上傳申請數量每年都在增長。知識庫中存儲了二百萬個各不相同的開源Java組件,為全球大約一千萬名開發人員提供服務。
不但管理Maven中心知識庫,Sonatype還提供應用程序健康檢查服務,使企業能夠看到開源應用程序中有哪些組件,檢查是否有已知漏洞。這一免費服務類似于開放網絡應用安全項目(OWASP)。
黑鴨子軟件、Flexera軟件、Synopsys、Veracode和WhiteSource軟件提供各種軟件組成分析(SCA)工具。SCA工具通常使用美國聯邦政府的國家漏洞數據庫作為發現已知漏洞的數據源。
Isbitski說:“SCA可以作為供應鏈認證的一種形式,因此軟件用戶或者軟件采購方可以驗證其包含的內容。由于開發人員可能會在沒有意識到的情況下把有漏洞的開源庫引入到代碼庫中,因此,軟件開發生命周期的早期階段也使用了這種方法,幫助發現有漏洞的組件。一些SCA工具會推薦替代組件或者升級后的版本,在這些版本中已經對漏洞進行了糾正。”
其他掃描和檢測已知漏洞的免費開源工具包括OWASP依賴關系檢查、retire.js以及實時節點安全平臺等。Retire.js和實時節點安全平臺關注的重點都是JavaScript和Node.js組件分析。
組成清單是怎樣工作的
傳統應用程序大約有100個開源組件。這100個組件即使目前被認為是安全的,將來也可能會發現漏洞。
在推動軟件組成清單應用的組織中,有一個是醫療衛生行業網絡安全工作組;它建議醫療機構創建應用程序中使用的開源和專用組件的軟件清單庫,以便發現安全、許可和質量問題。
工作組報告說:“擁有一份組成清單是企業管理資產的關鍵,因為在確定這些技術是否受到某一威脅或者漏洞影響之前,他們必須首先了解他們的系統都有些什么。”
更多的透明使醫療保健提供商能夠評估網上醫療設備的風險,確定組件按照與醫療設備網絡安全同樣的基本要求進行評估,在沒有補丁時實施緩解策略。
報告指出,雖然這種做法很重要,但仍然沒有得到廣泛采用。
Isbitski說:“大多數開源軟件開發的速度很快,不斷更新、添加或者刪除功能。開發人員已經掌握了大量的開源軟件,隨著組件的不斷擴展而變得更加復雜。這就需要對大量組件和版本進行密切監視。如果沒有工具的幫助,前期很難驗證開源組件,以后會逐漸暴露出問題。”
Lucas Mearian——高級記者,其工作涉及企業移動問題,包括移動管理、安全、硬件和應用程序,以及企業協作技術等。
原文網址:
http://www.computerworld.com/article/3209105/mobile-wireless/how-to-expose-flaws-in-custom-built-mobile-apps.html