19% 的頂級 Docker 鏡像沒有 root 密碼

上週六,18 月 XNUMX 日,Kenna Security 的 Jerry Gamblin 檢查過 Docker Hub 中 1000 個最流行的圖像,按它們為 root 用戶使用的密碼。 在 19% 的情況下,結果是空的。

19% 的頂級 Docker 鏡像沒有 root 密碼

高山背景

進行小型研究的原因是本月早些時候出現的 Talos 漏洞報告(塔洛斯-2019-0782),其作者——感謝來自 Cisco Umbrella 的 Peter Adkins 的發現——報告說流行的 Alpine 容器發行版的 Docker 鏡像沒有 root 密碼:

“Alpine Linux Docker 鏡像的官方版本(從 v3.3 開始)包含 root 用戶的 NULL 密碼。 該漏洞是 2015 年 XNUMX 月出現的回歸的結果。 其本質歸結為這樣一個事實,即在容器中部署了有問題的 Alpine Linux 版本並使用 Linux PAM 或使用系統影子文件作為數據庫進行身份驗證的其他機制的系統可以接受 root 用戶的空 (NULL) 密碼。

針對該問題測試的 Alpine Docker 鏡像版本為 3.3-3.9,以及最新版本的 edge。

作者向受影響的用戶提出以下建議:

“在從有問題的 Alpine 版本構建的 Docker 鏡像中,必須明確禁用根帳戶。 該漏洞的可能利用取決於環境,因為它的成功需要使用 Linux PAM 或其他類似機制的外部轉發服務或應用程序。

問題是 淘汰 在 Alpine 版本 3.6.5、3.7.3、3.8.4、3.9.2 和 edge(20190228 快照)中,受影響圖像的所有者被要求註釋掉帶有 root 的行 /etc/shadow 或確保包裹丟失 linux-pam.

接自 Docker Hub

Jerry Gamblin 決定詢問“在容器中使用空密碼的做法可能有多普遍”。 為此,他寫了一個小 腳本,其實質很簡單:

  • 通過對 Docker Hub 中的 API 的 curl 請求,請求那里托管的 Docker 鏡像列表;
  • 通過 jq 它按字段排序 popularity,並且從獲得的結果來看,前一千名仍然存在;
  • 對於他們每個人, docker pull;
  • 對於從 Docker Hub 收到的每個圖像, docker run 從文件中讀取第一行 /etc/shadow;
  • 如果字符串值等於 root:::0:::::, 圖像名稱被保存到一個單獨的文件中。

發生了什麼? 在 這個文件 有 194 行帶有 Linux 系統流行的 Docker 鏡像的名稱,其中 root 用戶沒有設置密碼:

“這份名單上最著名的名字包括 govuk/governmentpaas、hashicorp、微軟、孟山都和 mesosphere。 kylemanna/openvpn 是列表中最受歡迎的容器,拉取次數超過 10 萬次。”

然而,值得回顧的是,這種現象本身並不意味著使用它們的系統的安全性存在直接漏洞:這完全取決於它們的使用方式。 (見上面阿爾卑斯案例的評論). 然而,我們已經多次看到“這個故事的寓意”:表面上的簡單往往有一個缺點,你應該永遠記住這一點,並在你使用技術的場景中考慮到它的後果。

聚苯乙烯

另請閱讀我們的博客:

來源: www.habr.com

添加評論