Docker近年、コンテナ技術の普及により、Dockerで構成されるシステムが増えてきています。今回はDocker APIを利用したボットでAWSの認証情報を盗難する機能が追加されたことが報告されていました。ご興味のある方は「TEAM TNT – THE FIRST CRYPTO-MINING WORM TO STEAL AWS CREDENTIALS」の記事を参照してください。

Dockerには外部からDocker APIにアクセスしてDockerホストを制御する機能があります。このAPIは非常に便利でシステムの運用を自動化するには重宝されるAPIです。

設定方法は以下のように行うことで簡単にリモートからアクセスすることができます。

sudo nano /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:<port>
sudo systemctl daemon-reload
sudo systemctl restart docker

PCにインストールしたVirtualBox上で稼働するDockerに上記の設定をしてアクセスした結果になります。
curl -X GET http://[host ip]:[port]/images/json でDocker上のimage情報を表示することができます。

Execute Docker API

このように簡単にAPIにアクセスができてしましますが、APIのアクセスが制御されていなく、Dockerを自由にリモートから制御できてしまいます。

実はこのようなホストがAWS上で多く稼働していることがShodanで検索しても確認することができます。Shodanとはインターネットに公開されているホストをスキャンし、脆弱性があるとそのIPアドレスの情報が登録され、あらゆるキーワードで検索ができてしまうサービスです。自分のネットワークを登録しておくと通知してくれる機能はありますが、悪意のある人がこのサイトで検索して攻撃のための情報を収集することも可能です。

ボットの中にはShodanを検索してその結果から次のアクセス先を指定して感染を広げるような機能を持つボットも確認されています。

このShodanでDocker APIがどのくらい公開されているか検索してみると、国別では3番目に日本が多いことがわかります。またはAWS上のシステムでDocker APIが公開されていることがわかります。

Shodan Docker by Country Shodan Docker by Organization

ShodanではAWSで多くDocker APIが確認されていますがAWSユーザーに気をつけてほしいことが、AWSの認証情報を探索する機能を持ったボットが発見されたということです。

Dockerホストやコンテナにaws cliをインストールし、認証情報がセットされた環境では、~/.aws/credentialsに認証情報のファイルが生成されています。Docker APIを介してホストやコンテナ上の認証情報のファイルを狙らわれますので、公開されたサーバ上での認証情報の扱いは特に注意が必要です。

基本的な対策かつ簡単に行える対策としてはこのAPIを誰でもアクセスできるインターネットに公開しないことです。AWSの場合であれば、セキュリティグループなどを利用して特定のIPから許可する設定を行うことを推奨します。IPで限定する方法は認証を行なっていないため、安全に利用するにはDockerが提供する証明書認証の設定を行うことも検討してください。

 


関連リンク