DevOps管道攻擊日盛!如何絕地反擊?

2017年年中,俄羅斯國家支持的攻擊者在烏克蘭金融軟件包中安裝了惡意蠕蟲。當企業(yè)更新其軟件時就會被成功感染。自此,NotPetya蠕蟲病毒迅速傳播,在全球造成數十億美元的損失。白宮稱其為“歷史上最具破壞性和代價最高的網絡攻擊”。
三年后,與俄羅斯相關的攻擊者劫持了另一款企業(yè)軟件SolarWinds的Orion網絡監(jiān)控工具集的軟件升級過程,無疑,這起事件再次造成了廣泛且深遠的影響。針對此事,全球網絡安全咨詢公司NCC Group的高級安全顧問Viktor Gazdag表示,“訪問軟件開發(fā)管道使攻擊者有機會接觸網絡基礎設施,并獲得知識產權?!?/p>
針對DevOps管道的攻擊正在增加
人們盲目地認為,這種類型的攻擊只是孤立的,且依賴于高度專業(yè)和熟練的攻擊者。不幸的現(xiàn)實是,DevOps管道不僅僅是國家行為體的攻擊目標,同時也已成為網絡犯罪團伙的熱門目標。
根據Argon公司于1月份發(fā)布的一項研究顯示,與2020年相比,2021年針對軟件供應鏈的攻擊增長了300%以上。常見的攻擊策略包括,在流行的開源包中植入惡意代碼或利用已存在的漏洞、破壞CI/CD管道工具,以及利用硬編碼憑據和其他錯誤配置和安全問題。其中,開源組件通道是格外受歡迎的目標。
根據Sonatype公司于2021年9月發(fā)布的一項研究顯示,與2020年相比,2021年針對開源軟件供應鏈的攻擊增加了650%。攻擊面非常大。數據顯示,超過3700萬個組件和包位于Top 4開源生態(tài)系統(tǒng)中。2021年開源軟件下載量達到2.2萬億次,與2020年相比增長了73%。
為什么DevOps管道易受攻擊
軟件開發(fā)人員通常具有較高的權限級別和訪問權限。如果正在生產的軟件是為外部使用而設計的,那么影響可能會大得多,攻擊者也有機會在最終應用中站穩(wěn)腳跟。
因此,DevOps管道應該具有更高級別的安全性。而不幸的現(xiàn)實是,它們存在很多薄弱的安全實踐以及暴露的基礎設施和憑據。例如,您使用Shodan搜索開發(fā)工具“Jenkins”,便可以在互聯(lián)網上看到很多可用和可訪問的Jenkins基礎架構。
同樣糟糕的是,很多時候,CI/CD基礎設施也并未得到與企業(yè)其他領域同等程度的關注。而隨著現(xiàn)代開發(fā)實踐持續(xù)推進,情況正變得越來越糟。
Gartner分析師Dale Gardner解釋稱,“隨著組織轉向DevOps,出現(xiàn)了一種‘對開發(fā)的一些控制舉措有所放松’的趨勢。我們想要實現(xiàn)靈活性和敏捷性,而DevOps方法就是我們試圖快速獲取代碼的產物。但人們認為限制和控制舉措阻礙了這一點,因此出現(xiàn)了放松的趨勢。”
針對DevOps管道的攻擊類型
根據Linux基金會開源供應鏈安全主管David Wheeler的說法,針對DevOps管道最常見的三種攻擊類型是依賴項混淆、誤植域名和惡意代碼注入。
依賴項混淆(Dependency confusion)
提及供應鏈攻擊,就少不了要提“依賴項混淆”(也稱為命名空間混淆),特別是因為這種攻擊的簡單化和自動化特質,使其日漸受到攻擊者的青睞。得益于在多個開源生態(tài)系統(tǒng)中發(fā)現(xiàn)的固有設計缺陷,依賴項混淆能夠在攻擊者端通過最小的努力甚至是自動化的方式發(fā)揮作用。
簡而言之,如果您的軟件構建使用私有的、內部創(chuàng)建的依賴項,而該依賴項在公共開源存儲庫中不存在,那么依賴項混淆就會起作用。攻擊者能夠在公共存儲庫上以相同的名稱注冊具有更高版本號的依賴項。然后,很大的可能是,攻擊者創(chuàng)建的具有更高版本號的(公共)依賴項——而非您的內部依賴項——將被拉入您的軟件構建中。
2021年2月,通過利用PyPI、npm和RubyGems等常用生態(tài)系統(tǒng)中的這個簡單缺陷,道德黑客Alex Birsan成功地入侵35家大型科技公司,并為此獲得了超過130,000美元的漏洞賞金獎勵。在Birsan的研究成果披露幾天后,數以千計的依賴項混淆模仿包開始涌入PyPI、npm 和其他生態(tài)系統(tǒng)。
解決依賴項混淆的方法有很多:
在攻擊者之前搶先在公共存儲庫上注冊所有(你的)私有依賴項的名稱。
使用自動化解決方案,例如軟件開發(fā)生命周期(SDLC)防火墻,以防止沖突的依賴項名稱進入您的供應鏈。
開源存儲庫的所有者可以采用更嚴格的驗證過程并實施命名空間/范圍界定。例如,如果想要在“CSO”命名空間、范圍下注冊依賴項,那么開源存儲庫可以先驗證注冊的開發(fā)人員是否有權以“CSO”的名義這樣做。
誤植域名(Typosquatting)
Typosquatting中的“typo”指的是人們在鍵盤上打字時可能犯的小錯誤。Typosquatting也被稱為URL劫持、誤植域名、域名模仿、毒刺網站或虛假URL,在這種網絡犯罪形式中,黑客使用故意拼寫錯誤的知名網站名稱注冊域名。黑客這樣做是為了引誘不知情的訪問者訪問替代網站,通常為了惡意目的。訪問者可能通過以下兩種方式之一訪問這些替代網站:
無意中將熱門網站的名稱錯誤輸入到網絡瀏覽器中,例如 gooogle.com 而不是google.com。
被作為更廣泛的網絡釣魚攻擊的一部分引誘到網站。
黑客可能會模仿他們試圖模仿的網站的外觀,希望用戶泄露信用卡或銀行詳細信息等個人信息?;蛘呔W站可能是包含廣告或色情內容的優(yōu)化著陸頁,為其所有者產生高收入來源。
最早且最著名的Typosquatting攻擊示例涉及Google。2006年,網址劫持者注冊了網站Goggle.com,用作釣魚網站操作。多年來,Google名稱的變體foogle、hoogle、boogle、yoogle(所有這些都是因為它們靠近qwerty 鍵盤上的字母“g”)都已經被注冊,試圖轉移搜索引擎的一些流量。
此外,包括麥當娜、帕麗斯·希爾頓和珍妮弗·洛佩茲在內的名人也都淪為過Typosquatting的犧牲品。而在2020年美國總統(tǒng)大選之前,許多候選人也都被具有各種惡意動機的犯罪分子以他們的名義設置了Typosquatting域名。
對于組織來說,最好的防御策略是盡量保持領先于Typosquatting攻擊:
先于網址劫持者注冊您的域名的錯別字版本。購買重要和明顯的錯別字域,并將這些重定向到您的網站。
使用ICANN (互聯(lián)網名稱與數字地址分配機構)的監(jiān)控服務。網站所有者可以使用ICANN的商標清算所了解其名稱在不同域中的使用情況。
使用SSL證書發(fā)出信任信號。SSL證書是表明您的網站合法的絕佳方式,它們會告訴最終用戶他們與誰連接,并在傳輸過程中保護用戶數據。
通知利益相關方。如果您認為有人冒充(或準備冒充)您的組織,請告知您的客戶、員工或其他相關方注意可疑電子郵件或網絡釣魚網站。
關閉可疑網站或郵件服務器。
惡意代碼注入
代碼注入是指攻擊者將惡意代碼添加到合法開源項目中。他們可以通過竊取項目維護者的憑據并以他們的名義上傳代碼,或篡改開源開發(fā)工具來做到這一點。
2021年,明尼蘇達大學的研究人員被踢出了Linux貢獻群體,Linux內核社區(qū)也撤銷了他們之前提交的所有Linux內核代碼,原因在于他們故意提出有缺陷的“補丁”,而這些“補丁”又會在Linux內核源代碼中注入漏洞。盡管該事件被積極制止,但還是證實了一個結論:開發(fā)人員分布廣泛,并且沒有足夠的寬帶來審核他們提交的每一個代碼,這些代碼可能是存在缺陷的或完全是惡意的。
更重要的是,社會工程學可能來自最不受懷疑的來源——在上述案例中,具有“.edu”后綴的電子郵件地址就看似來自可信的大學研究人員。
另外一個突出案例是,任何為GitHub項目做出貢獻的合作者都可以在發(fā)布后更改版本。在此需要強調,GitHub項目所有者的期望是大多數貢獻者都能真誠地提交代碼到他們的項目之中。但正可謂“一個老鼠壞一鍋湯”,只要一個合作者不規(guī)矩就會損害許多人的供應鏈安全。
如何保護軟件開發(fā)管道
企業(yè)組織應該做些什么來保護他們的軟件開發(fā)管道?它應該從教育和培訓開發(fā)人員開始,建立最佳實踐(兩因素身份驗證和代碼審查),并安裝監(jiān)控工具來標記可疑活動。
從開發(fā)人員入手
在代碼開發(fā)和部署過程的安全性方面,內部開發(fā)人員和第三方軟件商店都需要監(jiān)督。
當使用第三方軟件開發(fā)公司時,我們需要非常嚴格地審查他們,這包括審查他們的測試程序,以及他們在開發(fā)環(huán)境中實施的安全控制,以確保他們有適當的流程和控制措施,可以交付我們足夠安全的東西。
而對于公司內部開發(fā)人員來說,最大的問題是不要使用可公開訪問的代碼存儲庫,因為它將允許威脅參與者訪問你正在進行的任何事情。
此外,還可以通過對企業(yè)軟件進行滲透測試來進一步提升開發(fā)安全性。事實上,在對企業(yè)軟件進行滲透測試時,開發(fā)人員總是會要求參與測試并觀看白帽黑客的工作,因為他們想要了解自己在做什么,并從滲透測試人員發(fā)現(xiàn)的漏洞中學習。它給了開發(fā)人員一種不同的思考方式。
使用適當的工具和控件
為了幫助公司的開發(fā)人員做出正確的決定并確保他們的安全,企業(yè)組織可以實施多項安全控制措施,例如,多因素身份驗證有助于防止外人訪問DevOps管道;使用私有代碼庫,以便開發(fā)人員可以從已經審查和批準的代碼中進行挑選。
有條件的企業(yè)還可以組建專門負責修補系統(tǒng)的團隊,定期掃描整個企業(yè)環(huán)境以尋找漏洞,同時確保部署的所有內容都是最新的。
此外,企業(yè)組織還可以部署其他措施來保護開發(fā)渠道,例如,為非生產暫存環(huán)境和生產環(huán)境設置單獨的管道,并限制可以訪問這兩個系統(tǒng)的人員。為了進一步鎖定訪問權限,公司還應該使用企業(yè)級訪問管理系統(tǒng),例如Active Directory或LDAP。
最后,建議企業(yè)組織完全跟蹤進入其軟件的所有組件,尤其是開源庫。開發(fā)人員傾向于在他們的軟件中包含開源代碼,但它可能存在錯誤和安全漏洞。
要求獲取軟件材料清單(SBOM),但也要掃描漏洞
許多業(yè)內人士一直在推行和倡導軟件材料清單(SBOM)。去年5月,拜登總統(tǒng)發(fā)布了一項行政命令,要求向聯(lián)邦政府提供軟件的供應商提供SBOM。兩天后,云原生計算基金會發(fā)布了一份最佳實踐白皮書,建議所有供應商在可能的情況下提供SBOM,并提供明確和直接的依賴項鏈接。
SBOM將幫助公司在其環(huán)境中找到易受攻擊組件的實例,以做出明智的風險決策。例如,Log4j漏洞早在2021年12月份就進行了修補,但截至2022年2月11日,40%的下載仍然是易受攻擊的版本。
有遠見的軟件供應商正開始將這些列表包含在他們的軟件中,因為這是他們的客戶希望看到的。當然,軟件供應商還可以更進一步,提供有關他們的軟件應該如何運行以及不應該如何運行的信息。
不過,無論SBOM是否會成為強制性的舉措,企業(yè)組織都應該掃描他們的軟件以查找已知漏洞和其他潛在的安全問題。Log4j漏洞問題的持續(xù)蔓延說明許多組織在保護代碼方面落后了多遠!
本文翻譯自:https://www.csoonline.com/article/3649798/why-devops-pipelines-are-under-attack-and-how-to-fight-back.html如若轉載,請注明原文地址。





























