Docker Engine APIの誤った設定

ほぼこもセキュリティニュース By Terilogy Worx

Docker Engineはあなたの周辺で使われているでしょうか。
Dockerは非常に便利です。
しかし、その構造や仕組みまでちゃんと理解して利用している人は少ないかもしれません。
基本的にはイメージをビルドしたり、コンテナを起動したりするだけなので、コマンド実行による結果が理解出来ていれば、通常はその仕組みまで理解する必要はありません。
しかし、利用者がその詳細を知っているかどうかに関係なく、Dockerにはさまざまな機能が実装されています。

Dockerに実装された便利な機能のひとつに、Docker Engine APIがあります。
これはDockerデーモンとやりとりを行うAPIで、さまざまなコンピュータ言語から利用することができます。
もちろんAPIですので、いわゆるコンピュータ言語からでなくても、curlなどのようなコマンドからもAPIを実行することができます。

このDocker Engine APIにはどういった機能があるのでしょう。
たとえば次のように使う事ができます。

  • APIを使って、目的の環境に任意のDockerイメージを配置する
    APIを利用すれば、これは実に簡単に実施できます。
    HTTP POSTリクエストを実行すればよいだけです。
    取得するイメージがDockethubにあるものであれば、ネットワーク通信から見ればなにも怪しいことはありません。

     

  • APIを使って、目的の環境の任意のDockerイメージのコンテナを開始する
    APIを利用すれば、これは実に簡単に実施できます。
    これもHTTP POSTリクエストを実行すればよいだけです。

このように利用できる機能ですので、簡単ですし、便利です。
ただこれが簡単だとか便利だとか言えるのは、本来の使用者が利用する場合のことになるのではないでしょうか。
しかるべき前提となる設定が実施されていない環境で利用できるようになっているDocker Engine APIがある場合、どういった事態になるでしょう。
どこかの誰かがあなたのDocker環境に、知らないイメージを勝手に配置し、動作させることができます。

実際にそのような事例が確認されています。
ある事例では、Docker Engine APIで持ってきたイメージの機能は、DDoS攻撃機能とマイニング機能を持つものでした。
この悪意あるコンテナイメージは、確認時点で3000回以上pullされていました。
少なくとも3000個の知らずに被害にあっている環境があるということになるでしょう。

ソフトウェアの便利さは、時間とともに増加していきます。
しかし、その前提にある正しい設定とセットで行使されない場合、ソフトウェアの便利さの増加は危険性の増加と同義になっていくということに思えます。
設定者による初期設定の確認だけでなく、定期的な見直しや設定者以外による設定の見直しなどを仕組みとして実装することが必要なのかもしれません。

参考記事(外部リンク):OracleIV – A Dockerised DDoS Botnet
www.cadosecurity.com/oracleiv-a-dockerised-ddos-botnet/