如果你在美国成長,那你很可能有去夏令營的記憶。即使你沒有自己去過,这种离开家庭,学习各种手工艺,结交新朋友,以及进行难忘冒险的营会体验已经融入了流行文化和媒體中。每年的八月,世界上最大的黑客夏令營在拉斯维加斯的炎热中举行。今年标志着第DEF CON三十二代。
在没有亲身体验的情况下,很难解释DEF CON。是的,有演讲轨道、官方研讨会和多个攻防夺旗赛(CTF),但还有更多其他内容。没有其他会议包含如此多的子会议和社区主导的活动。即使是已经参加了几年的与会者也会说,他们认为自己还没有体验到所有提供的内容。
虽然主办方没有发布官方人数,但过去的事件人数从25,000-30,000不等。每位与会者都带着对科技的热爱和许多分享的知识。走廊里到处都是人正在硬件上黑客攻击、编写软件、制作音乐、分享贴纸,以及让DEF CON变得有趣的所有活动。
村落
DEF CON 32 中包含了 33 個村莊。這些村莊涵蓋了廣泛的興趣領域,從航空太空領域的駭客活動、社交工程、錯誤信息到紅隊行動和應用安全等。每個村莊都是獨立組織的,為與會者提供一系列獨特的演講、研討會和實踐活動,讓他們與自己專注的特定領域互動。
應用安全村莊是駭客和安全社群中的一個寶貴空間,專注於保護支撐我們生活的應用程序。您的作者是幸運的人之一,曾幫助組織和 管理 2024 年應用安全村莊。
找出秘密
在 RSA Conference 2024 的應用安全村莊裡,GitGuardian 推出了我們的“找出秘密”遊戲,這是一款基於卡片的遊戲,模擬手動代碼審查以尋找明文憑據的體驗。玩家需要競相尋找所有隱藏的 API 金鑰、密碼和其他明文秘密,這些秘密可能被攻擊者用來進一步訪問一組代碼示例、Jira 工單、日誌文件和 Slack 訊息。

應用安全村莊的“找出秘密”,經編輯以符合 DEF CON 的照片規定
在 DEF CON Conference 的两天內,有超過 120 人來到 AppSec Village 的我們的站點體驗這個練習。我們甚至建立了一個排行榜,最快的玩家的errors最少,他們獲得了特別的奖品。
最常見的私密安全性問題
當人們開始檢查包含代碼的卡片時,我們收到了各種問題。我們認為分享一些這些問題可能會對您有所幫助,以防您還沒有听过這些疑問的答案。
以下是我们聽到的最常見的 11 个問題和我們的回答。
1. 提交(Commit)到底是什么呢?
提交是 Git 版本控制系统中的一项工作单位,全球超过 97% 的開發者使用 Git。它是給定時間點的文件系統快照,包含開發者自上次提交以來所做的所有工作。如果您將提交一個接一個地排成一列,您就能得到 Git 歷史,让您查看代碼庫生命週期中的每項更改是如何逐 incremental 進行的。使用 Git 的私密安全性挑戰之一就是歷史記錄是一個共享的永久記錄。如果一個秘密在一個提交中添加,在下一个提交中被移除,則含有秘密的提交仍然被保留。
2. 你怎么判断某样东西是否是秘密?
秘密是指可以直接存取系統或數據的任何憑据。這些可以是API金鑰、密碼、憑證和令牌等。它們難以被發現的部分原因在於它們在代碼和命令行中以多種方式使用。例如,在配置文件內,可能會為API金鑰設定一個特定的變量。但對於如Slack這類系統,API令牌是嵌入在URL本身內,意味著您需要熟悉該系統才能知道它是一個秘密。
許多系統在其用戶介面URL中使用長而獨特的數字,這些可能會非常類似內嵌令牌。例如,Figma URL可能會看似在路徑中包含一個base64編碼的字串。然而,如果您跟隨一個隨機的Figma鏈接,您會遇到一個登錄屏幕,因為您需要是一個经过身份驗證的用戶才能連接到該頁面。由於它不會自動授予系統訪問權,僅僅標識出頁面位置,所以一個在Figma中沒有立足點的攻擊者會返回“無訪問權限”的錯誤並繼續進行。這是另一個理由去擁抱工具以識別秘密,因為有平台能夠快速區分出一个URL是否包含授權令牌或只是看似如此。
3. 有效(Valid)意味著什麼?
有效,在我们這裡,指的是某個憑證仍然可以授予以訪問相關系統或數據的權限。如果被攻擊者發現,一個有效的秘密可能會立馬被使用。雖然非有效的秘密可以讓攻擊者對整體架構和互联系統有所了解,但只有有效的秘密才能為他們提供進入這些資源的直接途徑。這種類型的横向移動也是難以侦測的。
4. 那麼我應該怎麼知道哪些秘密是正確的?
最好的回答是尋找並移除所有有效的秘密。然而,正如Spot the Secrets所证明的,沒有正確的工具,這是一個難以解決的問題。手動代碼审查或僅依賴於簡單模式匹配的工具可能會讓你浪費時間修復已經過期的秘密,而不是專注於有效的秘密。過期的鑰匙威脅不大,因此消除它們的的努力應該放在發現的任何有效憑證之后。
5. 秘密和拙劣寫作的代碼之間有什麼区别?
攻擊者大多數時間都不是在读取你的代碼;他們正在掃描 specific ways to gain wider access as quickly as possible. Poorly written code can contain many vulnerabilities that an attacker can use, especially around Infrastructure as Code configuration. However, exploiting these flaws requires an attacker to take the time to understand the flaw and execute a specific attack against such issues rather than just leveraging plaintext credentials.
變量名稱和用戶名可以作為更複雜攻擊的一部分。例如,在代碼中找到的用戶名和電子郵件可以用於密碼喷射攻擊或暴力猜測嘗試,但這些比直接使用秘密更容易年被偵測,對攻擊者來說也非常耗時。
6. 那我找到一個秘密後該如何是好?
首先,停下腳步深呼吸。這對我們中的任何人都可能發生,所以如果你發現了一個洩露的秘密,不要太失態。紧急處理是好的,但不要恐慌,也不要在不知會發生什麼情況下吊銷找到的秘密。這可能會導致許多其他問題。
我們建議按照以下步驟進行:
- 了解秘密開啟了什麼。
- 弄清楚任何相關數據或系統的重要性。
- 檢查記錄以尋找秘密的未授權使用。
- 確定是否有任何數據或服務訪問已被洩露。
- 找出當你更換秘密時會坏掉什麼。
- 更換秘密並將新的憑證安全地儲存。
- 修復任何損壞的工作流程或生產部署。
- 評論事件並建立一個行動計劃以避免進一步的秘密洩露。
在文章“如果你的秘密被洩露了該如何是好:如何保持冷靜並對事件做出回應”中閱讀有关应变过程的更多信息。
7. 當發現一個秘密時,我的團隊總是重寫Git歷史。我們需要做的是不是只有這個?
Unfortunately,不行。雖然我們很喜歡 Git 清理步驟的補救過程,但实际上這通常是最後一個步驟,並且很多組織都認為這是一個選項。我們建議旋轉任何曾以明文形式暴露的密钥(請點擊上面鏈接查看補救过程建議)。
8. 我只是將倉庫從公開移除。這不夠嗎?
我們坦白地希望這是夠的,但不幸的是,對於所有人來說,一旦在 GitHub 上公开暴露,它應該永遠被視為已被 compromise。GitGuardian 扫瞄 GitHub 公開 API 上的每個新的 commit
和 isPublic
事件。
我們就是以此方式建造我們的年度 Secrets Sprawl 報告,也是 GitGuardian 公開監控服務的基础。雖然我們的目的是警告提交者他們做出了潛在危險的事情,但我們並不是唯一在監控這個公開 API 的行為者。您應該總是假設您曾经公开推送的任何代码或文件,已被您不认识的某人复制,並储存在您不知道的其他地方。我們總是建議旋轉任何可能已被暴露的密钥。
9. 為什麼誤警是一個問題?
在我們的 Spot the Secrets 活動中,我們要求用戶找出所有藏在 100 種可能提交中的密钥,Jira、Slack 和 Log 卡片,并为每個誤警施加時間懲罰。任何用戶错误地認為卡片含有密钥而实际上沒有時,將對該卡片施加 10 秒的懲罰。
在這個練習的有限範圍內,雖然表面上來看,過於謹慎並標記不含機密信息的事物似乎是一件好事,但實際上這是在浪費寶貴的時間,既浪費了報告者的時間,也浪費了任何被指派解決問題的人的時間。
任何報告太多假陽性結果的工具或流程都会導致警報疲勞。用戶被大量的警報淹没,開始忽略它們。這會導致對工具的不信任和使用上的不一致。它還可能整體 jam 掉應對過程,並意味著一些報告的真正機密信息可能無法及時处理好。
10. 文件名與識別機密有何關係?
簡單來說: 上下文。通用的機密密钥特別難以通過模式匹配 alone 找到。如果 markdown 文件中的一長串字符,根據我們的研究,這很高的可能性是一個示例密钥,所以你不太可能需要处理它。另一方面,如果同样的字符串出現在命名為project.env
的文件中password=
字符串之後,那麼你手头上很有可能是一個真正的機密。
文件名只是我們在GitGuardian Secrets Detection Engine中的预 validation 和 Post Validation考慮的元素之一,也是幫助我們通過平台内部的FP remover消除假陽性結果的因素之一。
11. 人们真的靠手動代碼審查來發現秘密嗎?
是的。我們調研的IT決策者中有27%的人表示他們依靠手動代碼審查來處理秘密蔓延問題,即使有75%的人表示他們曾受到秘密洩露的影響。
Spot the Secrets設計用來展示依賴人類來發現這些問題的問題。機器在模式匹配 thousands 或 millions 行代碼方面遠遠 surpass 人類。
共同學習是DEF CON的精髓
我们在DEF CON 上學到了很多其他課程,包括保持水分,每天至少睡几小時,以及當外面超過110°F/43°C時保持自己在室內。
议程上有很多優秀的講座;我們迫不及待等到視頻上架,以便 catch up 我們錯過的内容,同時幫助人們了解秘密蔓延。過程中,我們了解到很多關於安全和開發人員,以及人們普遍如何看待這個問題和思考解決方案。GitGuardian 希望將這些課程融入,使解決這個問題更加容易和更容易接近。
如果你從未考慮過去DEF CON,我們高度推薦,理由何止一個,參與AppSec Village 和 在黑客夏令營找到你的群體。
Source:
https://dzone.com/articles/secrets-security-at-appsec-village-at-def-con-32