Google Cloudとコンテナの継続的なセキュリティ
本文の内容は、2019年2月11日にSysdigのPawan Shankarが投稿したブログ(https://sysdig.com/blog/cve-2019-5736-runc-container-breakout/)を元に日本語に翻訳・再構成した内容となっております。
本日、CVE-2019-5736「runCコンテナブレークアウト」に関して発表されました。 CVSSレーティングが7.2と高い値である事を勘案すると素早くパッチを当てることが求められると考えられます。
runCは、Docker、cri-o、containerd、Kubernetesなどのインフラストラクチャの基礎となるコンテナランタイムです。 この新しい脆弱性により、侵入先のコンテナはホストのrunCバイナリを上書きし、ルートレベルの実行とその基盤となるファイルアクセスを取得することができます。 その結果、攻撃者は次の場合にコンテナ内で任意のルートレベルのコマンドを実行することができます。
Sysdig Secureのイメージスキャニングを使用すると、誤った設定のイメージがCI・CDパイプラインを介してプッシュされたり、運用環境で実行されたりするのを防ぎます。 スキャンポリシーを使用して、アプリケーションおよびOS / OS以外のパッケージの既知の脆弱性をスキャンし、secretsがイメージに含まれていないことを確認したり、Dockerfileの内容を分析したりすることができます。
Sysdig Monitorは、CIS Docker BenchmarkとCIS Kubernetes Benchmarkを実行しているSysdig agentからメトリクスを取り込んで、何百もの設定のベストプラクティスと照らし合わせる事でイメージをチェックします。 これらのメトリクスは、組織が傾向を見極め、コンプライアンスデータを運用データの上に重ねて、単一のビューから運用リスクとセキュリティリスクをより適切に識別するのに役立ちます。 以下に、オンプレミスまたはクラウドのいずれかで、複数のkubernetesクラスターにわたってrootユーザーで実行されているすべてのイメージの平均を示すトポロジーを見ることができます。 下記はAWS&GKEの例です。
特権コンテナの数などの他のCISメトリクスは時系列メトリクスと見なすことができるので、インフラストラクチャの任意の領域のリスクステータスを視覚化もできます。この例では、準拠していないさまざまなイメージを修正する方法を理解するためにどのレポートをドリルスルーする必要があるかを簡単に識別するために、ホスト毎にメトリックをセグメント化しています。Sysdig Monitorはメトリックの保持と集計を処理し、過去数年間の任意の時点におけるコンプライアンスステータスについてのレポートも作成できます。
この特定のシナリオでは、いずれかの特権モードで実行されているか、同じホスト上にあるものと同じnamespaceを共有しているされているコンテナの隔離をお勧めします。
最初のステップは脆弱性を見つけるためにイメージをスキャンし、環境全体にベストプラクティスが適用されていることを確認するためのコンプライアンスチェックを実行させます。次に、削除または修正が容易ではない本番環境で実行されているコンテナをカバーする必要があります。これは、Sysdig Falcoを使用してこの脆弱性を悪用する試みを特定することができます。
Sysdig Falcoは、オープンソースのコンテナセキュリティモニターで、コンテナ内の異常な活動を検出できるように設計されています。 Sysdig Falcoはシステムコールを利用して、すべてのシステムアクティビティのイベントストリームを生成します。 Falcoのルールエンジンは、このイベントストリームに基づいてルールベースで振る舞いを識別し、異常な振る舞いに見えるシステムイベントを警告します。 Falcoの充実した言語により、ホストレベルでルールを作成し、疑わしい活動を特定することができます。
このケースでは、コンテナからのrunC実行ファイルの上書きを検出ターゲットにしています -
rule: Modify Container Entrypoint
desc: Detect file write activities on container entrypoint symlink (/proc/self/exe)
condition: >
open_write and (fd.name=/proc/self/exe or fd.name startswith /proc/self/fd/) and container.privileged=true
output: >
%fd.name is open to write by process (%proc.name, %proc.exeline)
priority: WARNING
出力は下記のようになります。
01:25:51.714027188: Informational Privileged container started (user=root command=runc:[1:CHILD] init test (id=db654c180161) image=kaizheh/alpine:cve)
01:25:51.714982110: Informational Privileged container started (user=root command=test-cve test (id=db654c180161) image=kaizheh/alpine:cve)
01:25:51.733287089: Warning /proc/self/fd/3 is open to write by process (test-cve, /test-cve )
これは、ホストレベルのアクティビティを検出するだけでなく、悪意のあるアクティビティを正確に識別するためにコンテナに焦点を絞ったアクションを検出するFalcoエンジンの強力な機能となってます。
スキャンポリシーを適用し、コンプライアンスを有効にし、Falcoを活用することで、厳密なセキュリティのベストプラクティスを実施し、CVE 2019-5736にさらされるリスクを軽減できます。