このrun(DM)c Dockerの欠陥を修正しないと、病気になるぞ… 巧妙なコンテナはホストボックスをルート化できる。まさにその通りだ。そして、それが現実だ。

Table of Contents

このrun(DM)c Dockerの欠陥を修正しないと、病気になるぞ… 巧妙なコンテナはホストボックスをルート化できる。まさにその通りだ。そして、それが現実だ。

SUSE Linux GmbH のシニア ソフトウェア エンジニアである Aleksa Sarai 氏は、Docker、containerd、Podman、CRI-O のデフォルトのコンテナ ランタイムである runc に影響を及ぼす重大な脆弱性を明らかにしました。

「企業のITにとって破滅的なシナリオと呼べるインシデントはごくわずかだが、相互接続された広範囲の生産システムに影響を及ぼす一連のエクスプロイトが連鎖的に発生するのは該当する。そして、まさにこの脆弱性がそれを表している」と、レッドハットのコンテナ担当主任製品マネージャー、スコット・マッカーティ氏はブログ投稿で述べた。

CVE-2019-5736 と名付けられたこの脆弱性は、オープンソースのセキュリティ研究者である Adam Iwaniuk 氏と Borys Popławski 氏によって発見されました。

「この脆弱性により、悪意のあるコンテナが(最小限のユーザー操作で)ホストのruncバイナリを上書きし、ホスト上でルートレベルのコード実行を取得できるようになります」とSarai氏はOpenWallメーリングリストへの投稿で述べた。

この攻撃は、コンテナ内のターゲットバイナリを、runcバイナリを参照するバイナリに置き換えることで実行されます。これは、特権コンテナをアタッチ(ターミナルに接続)するか、悪意のあるイメージでコンテナを起動して自身を実行させることで実行できます。

しかし、Linux カーネルは通常、runc の実行中にホスト上の runc バイナリが上書きされることを許可しません。

/proc/self/exe「これを克服するために、攻撃者はフラグを使ってファイル記述子を開きO_PATH、その後バイナリを再度開いてO_WRONLY/proc/self/fd/<nr>別のプロセスからビジーループで書き込みを試みることができます」とSarai氏は説明する。「最終的には、runcバイナリが終了した時点で攻撃は成功します。」

攻撃者はコンテナ内でルートとして任意のコマンドを実行し、コンテナ ホストを乗っ取ることができます。

段ボール容器を持った高齢の女性と男性

Dockerは、高齢のWindows Serverアプリを監督下で残りの日々を過ごすよう促す

続きを読む

runcのメンテナーの一人であるSarai氏は、この欠陥を修正するためのgitコミットをプッシュしましたが、runc上で構築されたすべてのプロジェクトにこの変更を組み込む必要があります。また、彼はこの欠陥の亜種がDockerより前から存在するLinuxコンテナ化ツールであるLXCにも影響を与えていることを発見し、こちらもすでに修正されています。

Docker社は、この脆弱性を修正したv18.09.2をリリースしました。Red Hat社は、Red Hat Enterprise LinuxとRed Hat OpenShiftのデフォルト設定は保護されていると発表していますが、アップデートが必要なユーザー向けに緩和策のアドバイスを提供しています。オープンソースのKubernetes管理ソフトウェアを開発しているRancher社は、Dockerの旧バージョン向けのパッチ適用スクリプトを公開しました。

LinuxディストリビューションのDebianとUbuntuは修正に取り組んでいます。AWSとGoogle Cloudは、影響を受けるさまざまなサービス上のコンテナを更新するよう顧客に勧告するセキュリティ通知を公開しました。

マッカーティ氏は、これはコンテナランタイムの重大な脆弱性としては初めてではなく、また最後でもないだろうと述べています。「昨年のSpectre/Meltdownが、セキュリティ研究の対象がソフトウェアアーキテクチャからプロセッサアーキテクチャへと移行したことを示したように、runcのような低レベルのコンテナランタイムやdockerのようなコンテナエンジンも、今後は研究者や悪意のある可能性のある攻撃者から、より厳しい監視を受けることになるでしょう」とマッカーティ氏は述べました。®

Discover More