身份驗證憑證為何如此重要?
隱私管理在保持必要信息的安全和遠離攻擊者方面起著重要的作用,本文我們就將討論什么是隱私以及如何安全地存儲它們。
隱私管理之所以重要,是因為密碼泄露可能導致嚴重的數據泄露,隨著越來越多的工作數據被保存在云端,身份驗證的安全就愈發重要了。
隱私管理在保持必要信息的安全和遠離攻擊者方面起著重要的作用,良好保密的隱私,如密碼和其他身份驗證憑證,在理想情況下允許正確的人員訪問重要資產,并將組織受到攻擊的可能性降至最低。然而,隱私也可能是一把雙刃劍,尤其是當隱私并沒有像組織愿意相信的那樣隱藏得很好時。
隱私是什么?
在本文中,術語“隱私”涉及用于訪問需要身份驗證的系統的敏感信息,這包括登錄憑證,如用戶名、電子郵件地址和密碼,以及訪問令牌和私鑰。SolarWinds的漏洞提供了一個很好的例子,說明了隱私是多么脆弱,因為攻擊涉及使用弱密碼。
密碼強度
密碼強度可以通過其長度和所使用字母的大小來衡量。使用這些值,我們可以計算暴力攻擊所需的最大猜測數。理論上,最大猜測次數定義為xy, x表示字母中的字符數,y表示密碼中使用的字母數,其結果將是成百上千億種可能的組合。
然而,這種計算也有例外。當使用字典里的普通單詞時,密碼就更容易被猜出來了。一般來說,當密碼從一個更豐富的字母中使用更多的隨機字符時,它會變得更安全。此外,每次重復使用密碼都會降低安全性。
破解給定長度的密碼所需的最大暴力嘗試次數
不幸的是,長而強的密碼需要記住一長串隨機字符,這對用戶來說自然是一個挑戰,特別是考慮到多個帳戶時。
攻擊者使用的密碼字典的示例
即使用戶記住了一個冗長的密碼,到處使用它的傾向也會削弱它的強度。密碼重用是另一個安全風險。在出現漏洞的情況下,重用的密碼會危及其他服務,從而導致更大的影響。
雖然強大的密碼仍然很重要,但我們不得不質疑,這些類型的隱私是否是我們唯一可靠的方式來保護訪問關鍵任務資產和系統。密碼驗證方法是登錄的唯一方法嗎?
替代密碼
幸運的是,有替代密碼的方法。例如,使用非對稱加密和私鑰進行身份驗證已經成為安全Shell (SSH)服務的標準,這極大地限制了隱私被暴力猜測的風險,并強制要求適當的隱私存儲。
雖然這種方法仍然需要一個令牌來驗證用戶身份,但它對人類記憶的依賴要小得多。例如,我們還可以使用vault,它將存儲憑證并提供生成隱私的工具。這些工具還可以防止創建弱密碼和密碼重用。
雖然它避免了使用獨立密碼的缺陷,但在集中式存儲解決方案中保存隱私會帶來所有憑證和密碼在一次入侵中被破壞的風險,并強調了將此類存儲視為vault的必要性。確保對這個vault的訪問是至關重要的,強烈建議使用生物識別或多因素認證(MFA)授權作為額外的安全措施。
MFA本身顯著降低了被盜的幾率,即使賬戶的憑證已經暴露,因為它需要通過移動應用程序進行另一種身份驗證。用戶的手機和他們的隱私被暴露的概率顯著降低。
如何處理隱私
到期的隱私
如果你一直使用電腦,你可能在一段時間后被迫更改密碼。雖然有些人認為這是一種不便,但讓隱私過期有一個很好的理由。隱私可以在一段時間后被破解,它們的有效期越長,一些攻擊者就越有可能成功地找到方法竊取并泄漏數據。
隱私存儲的類型
現在讓我們來談談存儲隱私的不同方式。正如我們前面提到的,隱私存儲應該被當作虛擬vault來處理,因此也就安全了,因為破解它將允許攻擊者訪問密碼和與它們相關的賬戶。
工作流程中必須相互通信的系統數量正在增加。它們必須安全地這樣做,并且必須首先對來自其用戶的每個請求進行身份驗證。如果用戶不想每次都輸入憑證,或者僅僅記住憑證是不現實的,那么必須存儲憑證。
有多種方式可以存儲憑證:
- 明文:最不安全的類型,其中對文件的讀訪問將允許對系統的訪問。
- 哈希:主要用于服務器存儲隱私指紋的類型,防止入侵者獲得明文密碼。在這種方式中,研究人員強調在加密算法之上使用鹽值或另一個哈希層,以使潛在的攻擊者更難解密。
- Encoded:另一種形式的明文,例如base64編碼的憑證,因為有不可讀的字符。
- 加密:憑證使用另一個密碼加密,減少了未經授權的泄漏的可能性和影響。如果不先知道另一個隱私,一個能看到加密文件的人將無法解密文件并獲得所需的憑證。
從以上這四種類型中,很容易推斷出哪一種是最有利和最安全的存儲隱私。然而,除了這四種類型之外,當存儲憑證時,組織還必須考慮其他可能影響其計劃的因素。
其他需要考慮的申請
處理隱私存儲的一種方法是使用一個外部應用程序,比如vault。Vault 是秘密訪問私密信息的工具,可以幫你管理一些私密的信息,比如 API 密鑰,密碼,驗證等等。Vault 提供一個統一的接口來訪問所有隱私信息,同時提供嚴格的訪問控制和記錄詳細的審計日志。vault的主要優勢在于它以加密的形式存儲隱私的方式,以及它能夠從一個地方更改隱私,并在不更改代碼的情況下將更改反映到多個應用程序。
但是,對vault的訪問令牌必須存儲在設備上或動態獲取。在后一種情況中,通過MFA確認的動態訪問令牌是最合適的。因此,MFA不是所有情況下的最佳選擇,特別是對于高度自動化的系統。
明文加密的問題
并不是每個隱私存儲應用程序在默認情況下都以加密形式存儲憑證,文檔應該驗證存儲的隱私是否加密,還應該檢查它們,以防止利用錯誤配置問題。
在某些情況下,以明文存儲隱私被認為是一個漏洞。一般來說,明文是一種不安全且糟糕的設計決策,應該重新考慮。我們后面關于DevOps和云問題的很多討論也是圍繞明文展開的。
Kubernetes Secrets存儲的示例,默認存儲未加密
高度信任
最后,即使隱私信息以加密的形式存儲,組織仍然需要在其人員之間實現和維持一定程度的信任,這是因為某些人仍然需要知道或持有解密密鑰。
各類組織都應知道,隱私必須只有少數人能接觸到。這意味著只對有適當理由訪問該存儲或系統的用戶或應用程序保持讀取權限。對隱私進行加密會增加額外的安全性,攻擊者不得不更加努力地破解憑證。
隱私傳送
除了存儲的隱私外,安全性對于必須配置和需要傳輸的服務也是必要的。需要強調的是,移動隱私信息是正常的,因此應該通過安全(即加密)通道進行說明和完成。
安全通道意味著使用默認安全的協議,例如SSH或HTTPS。使用基于純文本的協議(如HTTP、SMTP、FTP)來傳輸隱私可以允許惡意攻擊者攔截通信并利用泄漏的隱私。
應該提到的是,將隱私放入源代碼管理(SCM)系統中也不是一個好主意,因為它給了不必要的更多的人訪問權限。涉及公共存儲庫的案例給SCM增加了另一層危險。如果一個組織堅持使用SCM,他們應該使用加密隱私的工具(例如,git-secret),以防止將SCM用作供應鏈攻擊的入口點的可能性。
隱私的影響
接下來將探討在當今開發技術(即DevOps和云)的環境中使用不安全的隱私存儲的含義。我們還簡要描述了一個真實的場景,在這個場景中,攻擊者在受感染設備中尋找憑證。
隱私和DevOps
今天,大多數人已經習慣于將開發和“本地”環境視為固有的安全性。例如以未加密的形式存儲隱私、只設計在安全環境中運行的軟件,以及默認情況下不加固安全特性。這為用戶提供了額外的便利,因為它無需進行復雜的安全配置。然而,權衡的結果是,這些實踐如何增加了發生安全事件的風險。我們已經看到了供應鏈攻擊、VPN安全薄弱、VPN漏洞等的影響。
同樣重要的是要注意,“本地”環境不再是本地的,因為我們看到越來越多的公司正在轉向云計算。存儲在使用硬件加密(HW)的設備上的明文隱私同時存儲在連接到云的設備上。簡而言之,無論是否在云中,以明文存儲隱私都是不安全的。
舉一個DevOps世界中的真實例子,Visual Studio Code直到最近才在其于2021年1月發布的版本1.5353中提供了對隱私存儲的支持。在這次更新之前,沒有官方的API可用來以更安全的方式存儲隱私信息,因此,安全實現它是開發人員的責任。
一個以明文保存Twitter API隱私的擴展示例
在進行后續研究后,我們發現其他338個擴展也有同樣的問題,明文存儲隱私。這些第三方擴展包括對多個云服務提供商(csp)和SCM系統的綁定。
除了這些問題之外,攻擊者關注的是憑證獲取,這將使Visual Studio Code用戶很容易成為此類攻擊的目標。
隱私和云威脅
隨著越來越多的公司開始采用云技術,攻擊者正在不斷發展他們的有效載荷,并對云服務憑證進行有針對性的搜索。重要的是要考慮如何通過使用不同的存儲機制來增強安全性,特別是由于隱私信息通常以明文存儲,因為用戶認為擁有一個安全的環境是理所當然的。將隱私以明文形式暴露出來,會讓攻擊者更容易竊取它們。當在云中進行操作時,組織必須根據共享責任模型。即使在云中,他們使用的憑證的安全性仍然是他們的責任。
正如我們前面提到的,在所有參與保密工作的人員之間實現高度的信任也是必不可少的。云提供商總是引用共享責任模型,這尤其適用于解決用戶錯誤配置的情況。這種共享責任的立場是必要的,因為沒有軟件是100%安全的。例如,之前的一篇博客文章介紹了攻擊者在破壞一個實例后如何請求AWS元數據服務獲取憑證或隱私信息。這突出了攻擊者在破壞云實例以進一步攻擊之后如何訪問云實例上的憑證。
攻擊后在AWS實例中獲取憑證
此外,在一種更通用的方法中,CSP命令行工具在第一次配置時生成授權令牌,并將這些令牌以明文格式存儲在文件中或作為系統變量。知道了這個功能,攻擊者就可以開發惡意軟件,在侵入一個實例后搜索這些憑證令牌。根據被盜憑證令牌的訪問級別,攻擊者可以繼續進行攻擊,并在內部傳播更多的有效載荷。
獲取多個CSP憑證
在分析中,一個行為引起了我們的注意,那就是攻擊者是如何在攻擊的不同點開始使用本機CSP工具,而不是開發自己的工具或使用攻擊。在這種情況下,根據用戶的配置,攻擊者將具有與服務相同的授權。這種行為意味著他們正在學習本地工具的所有可能選項和參數,并濫用它們。圖7顯示了他們的腳本用本機工具文檔注釋了行,這使我們認為攻擊者正在動態學習。在Lambda這樣的內部環境中,本機工具的使用是預先授權的,因此如果攻擊者成功地將工具上傳到其中,他們將擁有與服務相同的權限。
攻擊者使用本地工具從受害者那里獲取進一步的數據,目的是橫向傳播
真實攻擊場景
下面要講的是一個真實的攻擊場景,它強調了適當的隱私存儲的重要性。我們已經看到攻擊者在受感染的設備中尋找憑證,如果初始受感染的設備在其系統中存儲了其他設備的憑證,則使用能夠感染其他設備的惡意軟件,不過前提是攻擊者能夠獲得修改云服務的能力。
SSH憑證上的蠕蟲行為示例
最近的一項調查還顯示,攻擊者正在適應最新的技術,并積極嘗試利用基礎設施作為代碼(IaC)軟件,如Ansible、Chef和SaltStack工具,以將其有效載荷分配給盡可能多的設備。
使用IaC工具感染管理下的基礎設施
該視頻展示了一個潛在的攻擊者如何使用TeamTNT工具集的工具打破Docker容器。
保護隱私
到目前為止,組織必須認識到,隱私是如何在他們的把關角色中發揮更深層次的重要作用的。這就是為什么我們最好假設攻擊者總是在尋找揭露這些隱私的方法,并做好相應的準備。
組織不應該假設存儲在云中的數據已經免受風險的保護,要使用特定于云的安全解決方案來保護他們的云原生系統。
本文翻譯自:
https://www.trendmicro.com/en_us/research/21/f/secure_secrets_managing_authentication_credentials.html