選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
3 分鐘閱讀時間 (529 個字)

每日小知識#10 - container 資安

unsplash-tech004
  1. 如果前面有仔細看的話會知道,Linux Container 本身是透過兩個機制來達到隔離出不同的容器的:
  • cgroup,用來切割出並限制 container 對於 CPU、Memory、網路、I/O 等的資源使用
  • namespaces,用來隔離 PID、網路、IPC、Mount、UTS…等的空間,也因此在 container 內下的 ps aux 所看到的 PID 會跟在 Host 下看到的是不一樣的。
  1. 那麼 Container 的資安問題有可能會從哪幾個角度發生呢? 此篇主要著重在方向,不在解法,解法請待下一篇。
  • Kernel exploit

    • 跟 VM 不同,container 跟 host 是共享 Kernel 的
    • 承上,如果 Container 發生 Kernel Panic,那整個 Host 也會被癱瘓。
    • 如果在 VM 的話,那 Cracker 還必須先攻破 VM 的 Kernel 跟 Hypervisor,才有機會碰到 Host 的 Kernel。
  • DOS(Denial of Service)

    • 所有的 Container 皆與 Host 共享資源
    • 正因如此,要是沒有用限制好資源的使用量的話,攻破一個 container 也等同癱瘓 Host 所提供的服務。
  • Container Breakout

    • Cracker 在攻擊其中一個 container 時,不應該可以取得其他 container 或是 host 的權限。
    • 可能達到這個攻擊的原因是,User 並沒有被 Namespace 所切開
    • 正因如此,你在 container 中如果是 root,只要你能逃出 container 來到 host 的空間,那你也會擁有 root 的權限。
    • 這通常發生在應用程式的某些功能需要較高的限,而該功能卻有 bug 的時候。
  • Poisoned Images

    • 你怎麼能確保你下載的 Image 都是安全無毒的,而不是有心人事造假的?
    • 你要怎麼保持 Image 都是最新的 update,避免一些 bug 造成破口?
  • Compromising Secrets

    • 機密資訊通常會被放在哪呢?
      • 直接寫在 Dockerfile
      • 從環境變數傳入
      • 透過 bind mount 掛載
      • 利用 key-value store,如 Vault
    • 承上,通常是建議透過 Vault 讓機密資訊能安全被存放,否則…
      • Dockerfile 可以直接看到密碼
      • 環境變數傳入後就無法修改…下一個 env 就一覽無遺
      • Bind mount 就比較稍微難破解一點,不過把密碼明文放在檔案內,也不是一個好作法。

以上就是幾個可能可以攻入的方向,
往後幾篇都會以如何增加防護為主。

程式的面紗
每日小知識 #9 - 常用的 docker 指令

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/17, 週五

Captcha 圖像