みっきー申す

ITに関する興味関心のまとめ、サイバーセキュリティニュースのまとめ、Twitterで配信中の情報まとめなどを公開します。

7月に発見されたDockerの脆弱性CVE-2019-14271の実証について

PaloAltoのセキュリティリサーチャにより、今年2019年の7月に公開された、Dockerのcpコマンドの脆弱性CVE-2019-14271の調査結果に関する記事が公開されました。

unit42.paloaltonetworks.com

本件については、11月20日に米国のサンディエゴで開催されるKubeCon + CloudNativeCon 2019に当該記事の執筆者らが発表するそうです。

kccncna19.sched.com

サンディエゴ行きたい。。

イメージでは、ビーチと公園とラテンミュージックって感じですね。

ちなみに、Despacitoっていう曲が、筆者は好きです。

www.youtube.com

本当に関係ないことを言ってごめんなさい。。。

本題は以下からです。


Dockerのcpコマンドの脆弱性CVE-2019-14271とは

Dockerのcpコマンドを用いることで、コンテナ間でのファイルコピーができます。

およそ、他のLinux系OSのcpコマンドと一緒ですね。

Dockerのcpコマンドでは、以下の実行結果のように、docker-tarと呼ばれるプロセスを呼び出します。

https://unit42.paloaltonetworks.com/wp-content/uploads/2019/11/word-image-138-768x97.png

このdocker-tarはコンテナにchrootを行った上で、コンテナのファイルやディレクトリを一時的に記録し、最終的に、ホスト上の特定のディレクトリに対して抽出することで、コピーの動作を実現します。

ここではchrootを行ったのちにファイルをコピーする動作の際、シンボリックリンクを対象とすると、ホストの権限で実行されてしまう問題を引き起こしてしまいます。

つまり、本来、コンテナへのアクセスは、コンテナの実行権限で行われるべき動作ですが、chrootとその参照の結果、コンテナのルート権限を持って、ホストからコンテナの読み書きができるようになってしまいます。

結果、cpコマンドの脆弱性の悪用で、コンテナからホスト権限で自由なコード実行ができてしまうというものでした。

長々と書きましたが、本脆弱性自体は、7月にすでに修正バージョンが公開されています。

docs.docker.com


想定される攻撃シナリオ

今回の脆弱性においては、先ほど述べたdocker-tarプロセスが、libnss_*.soというライブラリを読み込む際に、この、libnss_*.soが侵害されたものに変更されていた場合に成立します。

ありきたりではありますが、以下2つが攻撃シナリオとして挙げられます。

  • 不正に作られたlibnss_*.soを組み込んでいるDockerイメージを実行した場合
  • 三者により、libnss_*.soが置き換えられたものを実行した場合

記事中では、libnss_*.soを書き換えたものの例として、run_at_linkという形で、実証コードを公開しています。このファイルをDockerイメージに組み込むと、想定通り、docker-tarが読み込んでくれるようです。

最終的に、/breakoutというスクリプトが実行されて、Hello from within the container!と出てきます。

以下の動画で紹介されているので見てみてください。

CVE-2019-14271 Exploitasciinema.org


まとめ

Dockerを使ったコンテナ技術も、だいぶ普及してきた感じがしますが、どうなんでしょうね。 普段使わないので、わからないというのが本音で。。。

ホームページも運用しているのですが、Wixを使っているので、インフラはもはや借りていないんですよね。。。

勉強のためにはよく紹介しているCMSというのもあるのですが、実用性を考えるとあまり、エンジニアでもなければ評価がよくなかったり。

結局、技術もビジネスのための一手段なのだと痛感しています。

ちなみに、本屋さんでこんなものがあり、サーバレスというのも一つのキーワードになっていましたね。

キングダム読み終わったら買おうかな(笑)

ではでは。