【業界初】コンテナイメージの動的な脅威分析 -隠ぺい化されたリスクの検知– #AquaSecurity #セキュリティ #コンテナ #マルウェア #動的分析 #サンドボックス
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本ブログは「Aqua Security」社の技術ブログで2020年4月22日に公開された「 Dynamic Threat Analysis for Container Images: Uncovering Hidden Risks 」の日本語翻訳です。
【業界初】コンテナイメージの動的な脅威分析 -隠ぺい化されたリスクの検知-
コンテナイメージは、外部のコードが組織の環境に入る経路の一つです。Docker は開発者による採用を促進するために、イメージワークフローを簡略化しているため、Docker Hub 上の構築済みイメージを誰もがプルして実行できます。そのためこれは悪意のある攻撃者によって悪用されることがあり、無害に見えるイメージにも高度なマルウェアが埋め込まれている可能性があります。
コンテナイメージ内のアプリケーションの依存性はオープンソースパッケージに基づいている事がよくあります。しかし、不誠実なコントリビューターが、十分な信頼を得てオープンソースプロジェクトに参加している可能性もあります。公式のLinuxディストリビューションのような成熟したプロジェクトではレビュープロセスが明確に定義されていますが、小規模なプロジェクトでは信頼できるコントリビューターからのコードを効果的にレビューするためのリソースが不足しており、ガバナンスが脆弱です。
現状、コンテナイメージがアクティブ化された時にどのような挙動をするか(悪意ある挙動をするか)を確認するためには、実際に実行する以外に実用的な手法はありません。この場合、内部ネットワークから適切に分離しないと非常に危険です。組織は、パブリックに提供されているソースを使用して作成したコンテナイメージを利用することで、自身の環境をリスクにさらしています。
このリスクは、従来の手法では検知できないこともあります。Aqua のサイバーリサーチチームは、(従来のパターンマッチ方式による)静的なマルウェアスキャンを回避し、コンテナがアクティブ化された際に有効になるような手法を用いた、コンテナイメージ内にマルウェアを隠ぺいする試みがエスカレートしていることを発見し、それについてブログを書きました。
Aqua Security 動的脅威分析の導入 -業界初のコンテナセキュリティサンドボックス
Aqua Security の Dynamic Threat Analysis(DTA)は、コンテナイメージが実際の環境でコンテナとして実行される前に発生するリスクを動的に評価します。Aqua DTA はコンテナイメージを安全で隔離されたサンドボックス環境で実行し、コンテナエスケープ(コンテナ経由でホストを攻撃)・マルウェア・クリプトマイニング・コードインジェクションによるバックドア作成・その他の脅威を検出するために、悪意のある行動やネットワークアクティビティなどの動作パターンや Indicators of Compromises(IoC※セキュリティ侵害インジケーター)を監視します。
レジストリまたは CI/CD パイプラインからイメージスキャンが開始されると Aqua DTA は数分間イメージを実行および分析し、分析結果を表示してオープンなネットワーク環境でイメージを実行できる場合の潜在的なリスクレベルを判断します。
Aqua DTA はいつ使用すべきか
マルウェア・脆弱性・その他の問題について、イメージの静的スキャンに加えて、次のユースケースに対処するためには Aqua DTA を使用することをお勧めします。
- パブリックイメージとそのオープンソースパッケージを承認する- ソフトウェア開発ライフサイクル(SDLC)のセキュリティ管理の一環として、パブリックのコンテナイメージとそれを構成するオープンソースパッケージをスキャンしてホワイトリストに登録します。
- ISVのサードパーティイメージを承認- 独立系ソフトウェアベンダ(ISV)のサードパーティイメージを組織に導入する場合は、事前にスキャンします。サードパーティのイメージの出所を証明することは困難な場合が多いため、このようなイメージは未知のリスクが含まれている可能性があります。
- 本番稼働前のセキュリティゲート- 開発の CI/CD パイプラインまたはレジストリから、本番に昇格する前に、機密性の高いアプリケーションや重要なアプリケーションについては、追加の予防措置としてリリース候補イメージをスキャンします。
- 分析と調査- 特定のイメージをスキャンして、実行時の動作を迅速に分析・把握します。たとえばリソース使用率の異常値を把握しておき、疑わしいインシデントが発生した後のフォレンジックの目安として使用したりします。
例1. 静的スキャンをすり抜ける脅威
近年私たちのサイバーリサーチチームは、jzulu/xauto という Docker Hub レジストリ上の悪意のあるコンテナイメージを特定しました。このコンテナイメージは報告後すぐに Docker Hub から削除されました。
Aqua DTA を利用しそのイメージスキャンすると、悪意のある挙動の正確なメカニズムを洞察することができ、以下の動作からイメージが悪意のあるものとして識別できました。
- コンテナ内のスクリプトによってバイナリファイルがコンテナディスクストレージに格納されました。
- ファイルは base64 でエンコードされているため、静的なマルウェアスキャンでは検出されませんでした。
- デコードされたバイナリファイルは、既知のマルウェア検出エンジンによって認識されました。
- ネットワークトラフィックを見ると、既知のクリプトマイナーホストへ通信しようする挙動を示しました。
- 実行時に Tor 通信(匿名通信)の試行と Shodan 検索エンジンの使用が確認できました。
例2. 悪意のあるOSSパッケージ:Pythonライブラリjellyfish
数ヶ月前、一種のスクワッティング攻撃を利用してSSHとPGP鍵を盗み出す2つの悪質なPythonパッケージが発見されました。これが発見されるまでの1年間、このパッケージはダウンロードが可能な状態でした。
私たちのサイバーリサーチチームは、jellyfishのパッケージを含むコンテナを実行し、それを Aqua DTA でスキャンしました。次の動作により、イメージが悪意のあるものとして識別されました。
- クレデンシャル情報の読み取り
- DNS 参照をせずに、IPアドレスに基づいてホストと通信
- 実行時に読み取られたクレデンシャル情報とDNS参照を使用しないホストとの通信
従来のパターンマッチ方式では足りません
コンテナのソフトウェアサプライチェーンは、さまざまなソースからのオープンソースパッケージとイメージを多用しているため、各コンテナイメージの正確なペイロードを知り、制御することが困難になっています。私たちが目撃してきたますます高度化された攻撃に対して、静的マルウェアスキャンでは対処しきれません。Aqua Dynamic Threat Analysis はコンテナイメージが運用環境で動作する前に、その隠れたリスクを評価します。イメージの脆弱性と静的マルウェアスキャンを補完し、コンテナ化されたアプリケーションへの攻撃のリスクを低減し、ソフトウェアサプライチェーンを保護するための自動化された追加コントロールを提供します。
Aqua DTA はさまざまな CI ツールやコンテナレジストリからイメージをスキャンするための Aqua Security Cloud Native Security Platform(CSP)の拡張機能として提供します。また、Aqua CSPM のプレビューで利用できます。