Upgrade to Pro — share decks privately, control downloads, hide ads and more …

雲端資料掉光光 - GCP 事件調查真實案例

雲端資料掉光光 - GCP 事件調查真實案例

iThome CYBERSEC 臺灣資安大會 2021

https://cyber.ithome.com.tw/2021/session-page/68

Funny Systems

May 06, 2021
Tweet

More Decks by Funny Systems

Other Decks in Technology

Transcript

  1. 1. WordPress 的機器被打掉了。 • 客戶自己也不知道,放一台 WordPress 的機器,整個 GCP 專案就淪陷了··· 2.

    每幾個月就會被攻擊,明確的時間間隔。 3. 資料真的掉光光 (包含消費者個資)。 4. 友商嘗試滲透測試,依然掉資料, 明顯沒有實際的改善、幫助,解決對的問題很重要。 已知的問題
  2. 推理流程 操作帳號活動紀錄 • Correlation 帳號 + IP • 驚見 日本

    IP ! • 開發團隊都台灣人 • 會不會是被打掉!?
  3. 推理流程 操作帳號活動紀錄 • Correlation 帳號 + IP • 驚見 日本

    IP ! • 開發團隊都台灣人 • 原來是有人出差, 才解除警訊
  4. 推理流程 操作帳號活動紀錄 • Correlation 帳號 + IP • 驚見 日本

    IP ! • 開發團隊都台灣人 • 原來是有人出差, 才解除警訊 • 服務帳號 (Service Account) 居然在進行操作? • 且 IP 來自 Instance • 順著這個脈絡往下查…
  5. 推理流程 操作帳號活動紀錄 • 生成「服務帳號金鑰」,驗證權限用途。 • 服務帳號金鑰是明文 JSON 檔案。 • 使用

    Cloud SQL Proxy 只能使用明文 JSON 進行驗證。 • 相關專案也會使用服務帳號金鑰 • 很有可能攻擊者盯上這點,取走服務帳號金鑰 如何取得服務帳號? 服務帳號在幹嘛? 是誰在操作?
  6. 推理流程 操作帳號活動紀錄 • 服務帳號金鑰 • 我們推斷,在老早之前就被拿去濫用了。 • 可透過 gcloud SDK

    登入,只需驗證一次即可使用。 • 客戶從來沒有 Renew 過,代表服務帳號金鑰依然可使用。 • 加上服務帳號可用的權限過大。 結論 服務帳號在幹嘛? 是誰在操作? 如何取得服務帳號?
  7. • SSH Key (公鑰) 在雲端到底有幾個地方可以存放? • 主機檔案系統 • Metadata 中繼資料

    • 類似雲端特有的環境變數 • Project, GCE Instance, Image for GCE 都有 Metadata • 這是雲端獨有;一般 IT 環境不會有的設計 SSH Key (公鑰),真的雷
  8. Cloud SQL,真的雷 Ref : https://cloud.google.com/sql/docs/mysql/connect-overview#managing_database_connections • 連線 Cloud SQL 需要設定白名單

    IP,居然可以 Bypass? 弱點揭露,獨家!! • 法泥系統團隊挖掘「官方文件不會告訴你的事」 • 又是服務帳號搞的鬼,使用服務帳號 + gcloud SDK 連線即可 Bypass • 只要 Cloud SQL 具有「Public IP」就有風險
  9. 不同調,真的雷 • Web GUI, gcloud SDK 不同調 • 行為不完全相同 •

    gcloud SDK 還分成 Beta, Alpha 版本 • 指令、參數、運作流程,甚至是 Audit Log 都不同 • 再次強調,對 Log 做逆向工程,真的痛苦 XD
  10. • Cloud Build 很方便,權限還很大 • 但需要把服務帳號指派給 GCE Instance • 為了避免濫用的可能性,我們建議兩點

    1. 服務帳號僅具有 Cloud Build 權限,且帳號名稱可以明確辨識用途 2. 將 Cloud Build 相關,全部移至「全新的 Project,專門執行 Cloud Build 」 服務帳號,方 (ㄨㄟˊ) 便 (ㄒㄧㄢˇ)
  11. Cloud SQL,方 (ㄨㄟˊ) 便 (ㄒㄧㄢˇ) Ref : https://cloud.google.com/sql/docs/mysql/project-access-control#roles • Cloud

    SQL 也存在服務帳號問題 • 依照需求,對應服務帳號「可使用的權限」 • 客戶使用 Cloud SQL Proxy, 用 roles/cloudsql.client 就好 • 服務帳號應命名:sql-service 或 sql-agent
  12. Backend 居然查詢 SQL Schema? 使用 gcloud SDK 連入 Cloud SQL?

    釐清架構+需求+最在意的保護目標是什麼?
  13. 釐清架構+需求+最在意的保護目標是什麼? • 如何埋下、分析 Log (from GCP, Web App) • 區分正常

    / 異常的操作 • 每台機器的架構、服務、流程、需求釐清 • 針對雲端的特性,該如何守護營運安全?
  14. 釐清架構+需求+最在意的保護目標是什麼? • 如何埋下、分析 Log (from GCP, Web App) • 區分正常

    / 異常的操作 • 每台機器的架構、服務、流程、需求釐清 • 針對雲端的特性,該如何守護營運安全? • 這些內容看似空話,我們團隊與客戶花費了半年時間進行釐清、調整 • 如何讓營運機制、Infra 更加安全,就是法泥系統的專業
  15. 明文落地的服務帳號金鑰 !? • 開源專案 Cloud SQL Proxy Hardening • 可用加密過的服務帳號金鑰

    • 於記憶體中透明解密後,進行驗證 • 不只是個 PoC,我們的客戶也在線上使用 • https://github.com/Funny-Systems-OSS/cloudsql-proxy-hardening
  16. 明文落地的服務帳號金鑰 !? • 重新強調一次這個流程 Instance A Compute Engine Cloud SQL

    Proxy Hardening 1. 讀取 2. 建立連線 無法讀取 Encrypted Credential File Cloud SQL Proxy Cloud SQL Encrypted Credential File
  17. 研究 服務 開發 產品 掌握雲端未知漏洞 客戶不足的安全知識 我們為您準備 入侵事件調查 建立安全基準 調整安全性架構

    補強雲端元件安全性 填補系統間的縫隙 雲端安全監控自動化 對 Log 逆向工程的雲端安全知識 轉化為規則並自動通知異常 法泥系統の雲端安全能力
  18. Everything to the moon, Cloud and Security 王立弘 (Leon) 雲端安全顧問,

    法泥系統 感謝您的聆聽, 感謝同事 Ruei,感謝老闆。 [email protected]