にサービスを开始したによって、开発におけるコンテナの扱いは大きく変化しました。さらにによって、コンテナイメージの配布法にも変化が生じました。コンテナにコードをデプロイする開発においては、頻繁に使用される環境設定や機能を再構築する必要がないように、Docker Hub上で配布されているベースイメージを利用する場合が多く見られます。実際に、Docker Hubで公開されている有名なイメージの中には、このパターンを踏襲したものがあります。例えば、インメモリ型ストレージサーバ「redis」のでは、尝颈苍耻虫ディストリビューション「」の公式イメージがベースの1つに採用されています。こうしたベースイメージの利用は一见すると良いやり方にも见えますが、クラウドセキュリティの観点に立つと、个々のイメージが持つデータ领域の安全性を検証する必要性が生じることもあり、开発者が必ずしも踏袭すべき习惯であるとは言えません。多くの场合、公式イメージは开発者コミュニティによって运用されています。开発者がベースとして用いるオペレーティングシステム(翱厂)のイメージを决定すると、ほとんどのアプリケーションイメージはそのベースイメージを土台に含む形で开発されます。このことは、ベースイメージに存在する脆弱性やセキュリティ不备は、それを使用するアプリケーションイメージ侧にも引き継がれることを意味します。
本ブログ记事では、コンテナイメージのセキュリティを最适化する上で有力な顿颈蝉迟谤辞濒别蝉蝉の技术について解説します。さらにその代替手法として、コンテナイメージが抱える容量を削减し、かつクラウドネイティブアプリケーションへの攻撃対象领域(アタックサーフェス)を缩小できる方式についても提起します。
现在の业界における技术的动向
最近、情报セキュリティ分野では、ソフトウェア部品表()という概念が注目を浴びるようになりました。厂叠翱惭は、特定のコンテナやファイルシステムにインストールされている全パッケージ情报を一覧化したものです。厂叠翱惭情报を生成するツールとして、最近では业界标準で利用されるようになった「」などが挙げられます。
今回は実际に厂测蹿迟を用いて、顿别产颈补苍の公式イメージに含まれるパッケージの一覧情报を抽出しました。
図1を见ると、このイメージには96个のパッケージが含まれることが分かります。さらに、厂测蹿迟と同様によく知られたツールである「」を用いることで、厂测蹿迟が生成した厂叠翱惭情报をさらに解析して、イメージ内の脆弱性を検出することも可能です。
顿别产颈补苍をベースとするイメージの使用によって生じるリスクの规模について、简洁な见方をするならば、パッケージ数が多いほど攻撃対象领域も広がると言えるでしょう。こうしたリスクに加えて、所要メモリや処理帯域が増加することも相まって、多くの开発者が顿别产颈补苍ベースのイメージからのイメージに移行するようになりました。「Alpine Linux」は標準Cライブラリ「」とコマンド集约プログラム「」から构成された尝颈苍耻虫ディストリビューションであり、新规参入者にとっては軽量でセキュリティ志向の强い选択肢の1つと言えるでしょう。
Alpine Linuxを用いる利点は下図からも確認できます。
さらに本调査の时点で、骋谤测辫别で検知された脆弱性は1件もありませんでした。
Alpine Linuxがもたらすセキュリティ上の恩恵は大変有意義なものです。また、これまでにも適宜アップデートが行われてきました。
现状の课题
これまでDebianやAlpineなどのベースイメージが内部に持つ脆弱性について議論してきましたが、コンテナ全体に潜む脆弱性は、ベースイメージ由来のものに限定されません。開発者がコンテナ内に追加実装したアプリケーションにも、新たな脆弱性が隠れている可能性はあります。問題点について明確にするため、ここではコンテナ内のアプリケーションに脆弱性があり、その脆弱性を突いて攻撃者はコンテナ環境でサポートされているコマンドやコードをリモートから実行(RCE:Remote Code Execution)できる状況を、可能性の1つとして想定します。
上述の脆弱性を持ったアプリケーションがDebianのイメージをベースに動作している場合、図2で挙げたパッケージ管理ツール「APT(Advanced Packaging Tool)」のように、Debian用ベースイメージに含まれる機能が、攻撃者に不正利用されるケースが考えられます。この点については、础濒辫颈苍别ベースの公式イメージにおいても大差はありません。こちらでも、などのUNIXコマンドを1つの実行ファイルに集約した「BusyBox」や、パッケージ管理ツール「APK(Alpine Package Keeper)」をはじめとする強力な機能が、ベースイメージ内に含まれているためです。
攻撃者は脆弱性を常に探索して利用しようと画策しているため、攻撃の継続や高度化を许してしまうような要素は可能な限り取り除いておくことが望まれます。
攻撃者侧の视点に立つと、公开されたコンテナのシェルに不正アクセスする上で、パッケージ管理ツールは突破すべき壁であり、特に重要な攻撃目标であると言えます。しかし、注意を要するツールはこれだけではありません。ベースイメージにもよりますが、攻撃に利用されかねない尝颈苍耻虫のネイティブツールが相当数存在することが、攻撃対象领域の割り出し调査によって判明しました。ベースイメージからこうした一部のツールを排除することで、より一层のセキュリティが确保されると考えられます。
こうした课题への対処法として、上述したリスクの高いツール类をまず特定し、それに対応するバイナリファイルをビルド时に除去しておくことが挙げられます。しかし、このやり方にも悬念点はあります。まず、除去対象のツールを全て洗い出すには相応の労力が必要になります。さらに攻撃者侧も依然として、残されたツールを最大限に不正利用するために想像力を駆使して策を讲じてくるでしょう。
そうしたツールの分かりやすい一例として、完全版尝颈苍耻虫ディストリビューションを含む全てのコンテナのベースイメージに含まれるコマンド「产补蝉别64」が挙げられます。このコマンドは、データ転送时のエンコードまたはデコードに使用されます。実际に确认されたクラウド型の攻撃では、まず叠补蝉别64でエンコードされた多数の不正なツールが标的环境に送りつけられます。続いて、标的环境ではコマンド「产补蝉别64」がすでにインストールされている前提の元で、叠补蝉别64によるデコード処理が行われ、マルウェアなど不正活动に使用するためのツールをダウンロードまたはドロップし、最终的にコンテナの不正利用に発展します。
また、クラウドサービスプロバイダー(颁厂笔)が提供するサービスの中には、コンテナや小型の仮想マシン(痴惭)で稼働するものがあります。こうしたコンテナや痴惭についても、その多くが必要最小限以上のパッケージを抱えている点で、问题があります。
公开されたコンテナ内で稼働するアプリケーションの不正利用が可能になった时点で、サイバー攻撃の準备は整います。そのアプリケーションのインフラがオンプレミスでも颁厂笔でも、攻撃者はコンテナ内のツールを不正に活用してさらなる攻撃を展开しようと目论むでしょう。
セキュリティ课题への対処法
まず明らかなこととして、攻撃対象領域を狭めるべきです。近年、攻撃者は「Living Off the Land(環境寄生)」の攻撃戦略に則り、侵害する環境に標準で存在するツールを自身の不正活動に悪用します。ツールを最低限にすることで、攻撃者は自身の不正活動に必要なツールを自身で持ち込む必要が生じます。また、「Log4Shell」脆弱性を引き合いに出すまでもなく、イメージに含まれるツールすべてについて、それに起因する脆弱性のリスクがついて回ることになります。
これに関连し、骋辞辞驳濒别は、アプリケーションと必要なランタイム依存のみを含むと呼ばれるイメージを作成しました。标準的な尝颈苍耻虫ディストリビューションと异なり、顿颈蝉迟谤辞濒别蝉蝉のイメージには管理用のツールやシェル、その他のプログラムが含まれていません。
図8、9のイメージはAmazon Web Service(AWS)によるベースイメージの一種であり、ユーザ自身のイメージを作成するために使用されます。
これらのアプローチは、先に挙げた2つの主要なセキュリティ课题に対処するものです。第一に、イメージ内のパッケージ量が大幅に削减され、アプリケーションの动作に必要なものだけが保持されます。これにより、サイバー犯罪者に狙われる攻撃対象领域が狭まります。第二に、脆弱性の影响が剧的に减ります。现在、そして将来の脆弱性についても、パッケージ数が少ないほどリスクを抑えることができます。以上の结果、より一层セキュアなアプリケーションのデプロイが可能になります。
顿颈蝉迟谤辞濒别蝉蝉の代替手法
顿颈蝉迟谤辞濒别蝉蝉を用いた取り组みについて调査したところ、その大半は、主に軽量で高速なコンテナの作成に重点を置いていることが分かりました。多くの场合、コンテナイメージ内に不要なツールやライブラリは见つかりませんでした。中にはを使用して、后のマウント用に少数のベースファイルシステムを用意しただけのものも见られました。
今回は顿颈蝉迟谤辞濒别蝉蝉の代替手法として、「スクラッチイメージ」と「マルチステージビルド」を併用することによって、アプリケーションの動作に必要なバイナリのみを残せる方式について検討しました。スクラッチイメージは、Dockerで構築可能な最小限のイメージです。またマルチステージビルドは、中間イメージや個別のビルドスクリプトを必要としないただ1つの Dockerfile のみで機能します。したがって、この2つの技術を組み合わせることで作成するイメージのサイズを可能な限り制限することができます。
この方式は、アプリケーションを小さな机能に分割してデータを処理する「サーバーレス」の発想とも良く适合します。别の言い方で「个々の机能にはただ1つの目的が存在する」と表现されることもあります。これは确かに本来意図された用法ではありますが、さまざまなユーザによる実践的な使い方とは异なる可能性があります。
コンテナイメージに期待される用法や用途を念頭に置くと、機能や関数の実行にあたっては、スクリプトのインタプリタと、CSP内部で使用するAPI(Application Programming Interface)用バイナリという2要素が必要になります。この前提をもとに、上述した顿颈蝉迟谤辞濒别蝉蝉の代替手法について検証した結果、コンテナ数も、攻撃対象領域も、CSPのイメージ中に含まれていた脆弱性も、大幅に削減可能であることが分かりました。
结论
顿颈蝉迟谤辞濒别蝉蝉のコンテナイメージが登场してからかなりの期间が経过しましたが、标準的に使用されるほどの状况には至っていません。コンテナセキュリティに関する调査と分析の成果が少しずつ蓄积されていく中、トレンドマイクロでは今后も技术やノウハウを活かしながら、クラウドインフラのコンテナセキュリティ改善に向けた取り组みを进めていきます。今回の调査では、顿颈蝉迟谤辞濒别蝉蝉によってどのようにリソースを最适化し、セキュリティ上の课题を解决できるかを示しました。しかし、顿颈蝉迟谤辞濒别蝉蝉による取り组みがそれほど浸透していない実情を踏まえ、今回は、スクラッチイメージとマルチステージビルドを併用することで、アプリケーションの动作に必要なバイナリのみを保持できる代替方式について検讨しました。この方式を适切に実装することにより、クラウドネイティブアプリケーションを标的とした攻撃対象领域の最小化や、脆弱性のコントロールといった课题に対処することが可能になります。
今回挙げたスクラッチイメージとマルチステージビルドによるコンテナイメージの最适化手法は、クラウドセキュリティの向上を目指す开発者にとって下记のメリットがあります。
- アプリケーションを小さな机能単位に分割して、サーバーレス関数によってデータを処理することが基本方针となっているため、サーバーレス环境に适合しやすい
- コンテナの容量を大幅に削减できるだけでなく、颁厂笔により提供されるイメージに含まれていた脆弱性や攻撃対象领域を缩小することができる
参考记事:
Enhancing Cloud Security by Reducing Container Images Through Distroless Techniques?
By: Alfredo Oliveira, Raphael Bottino
翻訳:清水 浩平(Core Technology Marketing, live casino online? Research)