保護Java應用程序不被竊取數據和源代碼2
前面的文章提及保護Java應用程序不被竊取數據和源代碼1,今天我們繼續
黑客如何利用外部依賴性注入不需要的代碼
只需要做兩件事:
控制maven(或任何其他公共倉庫)中的第三方依賴,併發布帶有惡意軟件的新版本(或替換現有的發佈版本)。
希望客戶的應用程序使用具有新的依賴版本的外部資源庫(或具有$latest版本的完美案例)。
如果這些要求得到滿足,受感染的依賴關係可以執行惡意軟件代碼。這給了黑客什麼機會? 無數個!
在惡意軟件內部,我們能夠動態地執行幾乎所有可以想到的應用程序。但在所有的問題中,我認爲最昂貴的是被盜的源代碼。
如何竊取源代碼?
只要JVM能夠訪問包含類的文件夾,我們就可以預料到外部依賴性也有權利閱讀它。在實踐中,竊取源代碼有兩個步驟。
從用戶目錄/classpath複製*.class文件。
向黑客的服務器發送*.class的二進制數據(在我們的例子中,我們將只打印類的名稱和它們的大小)。
用SLF4J 日誌組件 重現攻擊
在這個例子中,我們將通過將惡意軟件注入SLF4J 日誌組件 來重現攻擊。我們假設黑客獲得了對SLF4J倉庫的訪問權(作爲一種選擇,黑客可能會執行中間人攻擊並替換來自外部倉庫的jar文件傳入請求)。
我們期望在受害者一方有什麼?
他有來自外部倉庫(如maven central)的記錄器依賴。
他使用最新版本或手動更新到最新版本(不是強制性條件,但在這種情況下,由於大多數用戶使用的是固定版本,所以泄漏會被社區發現)。
攻擊的例子
黑客側
受害者更新版本和啓動應用程序時的結果
如何保護你的應用程序免受此類攻擊
有沒有什麼終極方法來保護你的Java應用程序免受此類攻擊?不幸的是,沒有,有很多方法可以將惡意軟件注入你的代碼中。黑客可以在構建過程中注入惡意軟件,也可以在JDK中注入惡意軟件,還可以通過控制你的網絡動態地替換依賴關係。然而,爲了保護你的應用程序,以下是你應該實施的一些預防措施。
不要使用外部資源庫,而是使用你的私人資源庫(例如 https://oss.sonatype.org/)。
使用穩定的依賴版本,永遠不要使用$LATEST的版本。
不要使用自定義的、非官方的依賴(不是來自官方來源)。
配置網絡並關閉大多數端口/協議,以避免源代碼傳輸。
在關鍵情況下--將你的應用程序部署在內部專用網絡中(雖然,這對大多數應用程序來說不是一個選擇,特別是對全球客戶來說)。
總結
還有很多方法可以入侵Java應用程序。在這篇文章中,描述了大多數黑客使用的最知名、最有效的方法。不要忽視提到的建議,做好你的應用程序的安全。
今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管管,團隊建設 有參考作用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟件工程的迷思
企業項目化管理介紹
軟件項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網數據庫架構設計思路
IT基礎架構規劃方案一(網絡系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變
如有想了解更多軟件設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關注我的微信訂閱號:
作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發佈在我的獨立博客中-Petter Liu Blog。