在云遷移的過去十年中,針對Java應(yīng)用程序的威脅模型以及我們需要保護(hù)它們的方式發(fā)生了變化。OpenJDK已經(jīng)在這方面做出了一個積極的改變,它棄用了舊的SecurityManager,這是一個保護(hù)過去AOL CD和紙質(zhì)地圖時代的遺跡。安全方面的下一個積極變化是加強軟件組件的供應(yīng)鏈,了解正在運行的軟件和易受攻擊的軟件,并與數(shù)據(jù)面臨風(fēng)險的非技術(shù)專家溝通這些信息。如果你也對java感興趣,不妨報個java培訓(xùn)班,有專業(yè)講師面授指導(dǎo)教學(xué),還有更加系統(tǒng)全面的課程,讓學(xué)習(xí)更科學(xué),更有效。
這種威脅模型的一部分是由去年的Log4j等易受攻擊的庫驅(qū)動的。盡管Log4j是一個很棒的日志庫,并且在補丁方面非常活躍,但許多團(tuán)隊都在努力確定需要在哪里應(yīng)用這些補丁。對于了解自己的代碼并能夠部署的Java開發(fā)人員或團(tuán)隊來說,補丁很簡單——你更新了一個庫,就這樣了。但現(xiàn)實情況是,軟件的發(fā)展速度很快,往往會將這些技術(shù)專家的控制權(quán)交給那些不具備在這個級別管理問題的專業(yè)知識的利益相關(guān)者。在一場爭奪戰(zhàn)中,不了解Java細(xì)節(jié)的團(tuán)隊四處尋找,包括.NET軟件和Python論壇。魁北克政府關(guān)閉了服務(wù),直到他們知道Log4j在哪里。這種干擾是無效的,不能保護(hù)我們的數(shù)據(jù)。
Java應(yīng)用程序威脅模型的一個主要部分現(xiàn)在涉及跟蹤組件并了解我們的應(yīng)用程序包含已知易受攻擊組件(如Log4j)的位置的能力。
常見的Java應(yīng)用程序的供應(yīng)鏈?zhǔn)鞘裁?
看待供應(yīng)鏈的一個簡單方法是,大多數(shù)參與者是生產(chǎn)者和/或消費者。想學(xué)習(xí)有關(guān)java的更多技能,不妨報個java培訓(xùn)班,這是快速掌握java技能的有效方法,可以讓你少走很多彎路。企業(yè)架構(gòu)師可能已經(jīng)熟悉這個類比,因為供應(yīng)鏈像隊列一樣移動,因此可以使用類似的術(shù)語。這種供應(yīng)鏈的例子包括:
l 像Maven Central這樣的存儲庫是JAR文件的生產(chǎn)者。他們將這些組件提供給開發(fā)人員或構(gòu)建系統(tǒng),他們是這些JAR文件的使用者。
l 開發(fā)人員使用JAR文件并生成將應(yīng)用程序組合在一起的新代碼。一些開發(fā)人員生產(chǎn)的庫被送回Maven Central,后者是用戶。
l 構(gòu)建環(huán)境使用開發(fā)人員的自定義代碼和repo庫來生成應(yīng)用程序、容器或其他捆綁包。
l 當(dāng)應(yīng)用程序部署到環(huán)境或發(fā)送給客戶時,通常會結(jié)束供應(yīng)鏈。
l 對于購買的COTS軟件,供應(yīng)商是生產(chǎn)商,運營商通常是消費者。在內(nèi)部,供應(yīng)商有自己的軟件供應(yīng)鏈。
最終目標(biāo)是將應(yīng)用程序轉(zhuǎn)移到生產(chǎn)環(huán)境并運行它們——這個生產(chǎn)環(huán)境只是一個消費者,因為它不會產(chǎn)生新的工件(在DevOps周期中,生產(chǎn)的輸出是反饋)。在java培訓(xùn)中,有系統(tǒng)全面的理論知識和企業(yè)級實戰(zhàn)項目,可以讓你真正掌握java知識和技能,更好地進(jìn)行項目開發(fā)。
評估“軟件供應(yīng)鏈”背后的主要驅(qū)動力是快速檢索三個問題的答案:
1.我有什么軟件,包括組成更大系統(tǒng)的組件?
2.當(dāng)一個軟件或庫被識別為易受攻擊時,它會影響我嗎?如果會,在哪里?
JVM如何管理我的Java應(yīng)用程序的供應(yīng)鏈?
目前有許多方法用于清點應(yīng)用程序。定制軟件通常使用工具在CI/CD管道中創(chuàng)建SBOM;Maven通過其依賴項:樹插件提供了這一點。另一種方法涉及容器掃描,以分析軟件運行的包裝環(huán)境。另一種方法是將代理集成到軟件中。然而,每種方法都需要一個團(tuán)隊在供應(yīng)鏈的某一步驟中采取行動,而不捕捉通常部署在這些步驟之外的生產(chǎn)漂移或下載項目。JVM擁有的一個獨特優(yōu)勢是,它必須無處不在才能運行軟件,而且JVM已經(jīng)擁有了必要的信息,因為它負(fù)責(zé)加載代碼。
Azul提供了兩個JVM,作為其他Java實現(xiàn)的替代品。除了更快地運行應(yīng)用程序并降低運營成本外,10月份的PSU版本還實施了漏洞檢測的第一個版本,以幫助處理供應(yīng)鏈威脅。想學(xué)習(xí)java的同學(xué)不妨報個Java培訓(xùn)班,可以節(jié)省學(xué)習(xí)時間,提高學(xué)習(xí)效率,在短時間內(nèi)學(xué)有所成,還能找到一份不錯的工作。
在供應(yīng)鏈威脅模型中,JVM還提供了驗證信任的另一個優(yōu)勢。由于供應(yīng)商和承包商制作自己的SBOM來識別組件,因此信息可能會不正確。承包商可能會在組件中隱藏一個易受攻擊的庫,假設(shè)它們可以避免命名空間沖突。通過使用JVM生成和/或驗證SBOM,組件檢測可以是字節(jié)碼感知的。JVM可以理解“代碼形狀”或簽名,并根據(jù)組件所做的而不是它們所宣稱的內(nèi)容來匹配組件,而不是簡單地查看文件來確定每個文件所聲稱的內(nèi)容。Azul在Java社區(qū)工作了十多年的性能分析工作,他創(chuàng)建了一個用于性能代碼識別的云數(shù)據(jù)庫,并能夠?qū)⑾嗤姆椒☉?yīng)用于安全問題。
通過加速Java增強安全控制
當(dāng)JVM執(zhí)行跟蹤組件的工作時,一個關(guān)鍵好處是能夠檢測JVM上運行的所有工作負(fù)載,而不僅僅是安全控制所涉及的工作負(fù)載。目前正在使用其他方法來庫存組件的團(tuán)隊?wèi)?yīng)該繼續(xù)這樣做——目標(biāo)是縱深防御,每個控件一起工作以捕捉其他控件可能錯過的東西。通過以生產(chǎn)速度工作,Azul漏洞檢測等較新技術(shù)正在“向右移動”,以提供對可能丟失的項目的生產(chǎn)速度驗證,或節(jié)省集成和掃描各處Java軟件的工作。Java培訓(xùn)中有很多實操項目鞏固你所學(xué)的知識,讓你擁有一定的項目經(jīng)驗,在以后找工作時,比別人更有競爭力。