Google Cloudとコンテナの継続的なセキュリティ
本文の内容は、2021年9月30日にDan Papandreaが投稿したブログ(https://sysdig.com/blog/chainging-the-game/)を元に日本語に翻訳・再構成した内容となっております。
ソフトウェアサプライチェーンのセキュリティに関する情報は数多く存在し、その数は増え続けています。これらの情報は、ソースやビルドに関する基本的な事項をカバーしているが、ソフトウェアサプライチェーンのライフサイクル全体をカバーしているのでしょうか?ランタイムのビルド環境は保護されていますか?アプリケーションのポストデプロイはランタイムで保護されているでしょうか?
この記事では、これらの概念を説明するだけでなく、以下の点についても説明していきます。
勇敢な読者よ、読みたまえ...
ソフトウェアサプライチェーン攻撃は、サイバー脅威アクターがソフトウェアベンダーのネットワークに侵入し、悪意のあるコードを使用して、ベンダーが顧客に送信する前のソフトウェアを危険にさらすことで発生します。この攻撃を受けたソフトウェアは、顧客のデータやシステムを侵害します。
サプライチェーンセキュリティ活動は、サプライチェーンのセキュリティを強化することを目的としています。
ソフトウェアサプライチェーンのイメージ図
大統領令(EO)は、NISTを含む複数の機関に対し、ソフトウェアサプライチェーンのセキュリティと整合性に関連するさまざまな取り組みを通じて、サイバーセキュリティを強化することを求めています。
EOのセクション4では、NISTに対し、民間企業、学界、政府機関などから意見を募り、ソフトウェアサプライチェーンのセキュリティを強化するための既存の規格、ツール、ベストプラクティス、その他のガイドラインを特定、または新たに開発するよう指示しています。
これらのガイドラインには以下が含まれます:
ソフトウェア部品表(SBOM)とは、ソフトウェアを構成する部品のリストのことです。
ソフトウェアベンダーは、多くの場合、オープンソースや商用のソフトウェアコンポーネントを組み立てて製品を作成します。SBOMは、製品に含まれるコンポーネントを記述したものである。これは、食品のパッケージに記載されている成分表に似ています。アレルギー反応を引き起こす可能性のある食品を避けるためにラベルを参照するように、SBOMは、企業が組織に害を及ぼす可能性のあるソフトウェアの消費を避けるのに役立ちます。
肝心な点は?:
クラウドネイティブランタイムセキュリティプロジェクトであるFalcoは、デファクトのKubernetesの脅威検出エンジンです。Falcoは2016年にSysdigによって作成され、インキュベーションレベルのプロジェクトとしてCNCFに参加した最初のランタイムセキュリティプロジェクトです。Falcoは、ランタイムでアプリケーションの予期せぬ動作を検出し、脅威を警告します。それでは、Falcoがどのようにしてこれを実現しているのかを説明します。
Falcoは、システムコールを使って、以下のようにしてシステムの安全性を確保し、監視します:
Falco は、実行時にお客様とお客様のソフトウェア サプライ チェーンを保護するために、120 以上のアウトオブボックスのルールを提供しています。実用的な例は数多くありますが、サプライチェーンに特化して、最近の攻撃で見られる問題に対応するルールもあります。
我々は、攻撃者が最も共通点の多い、ビルドマシンやビルドポッドを経由して、数ヶ月に渡って侵入に成功しているのを見てきました。私たちは、攻撃とは、攻撃者がビルドやコンテナの実行中に悪意のあるコードを投下し、外部ネットワークに接続して、会社の重要な資産を文字通りチェックされずに送信することだと説明しました.... (これらのマシンやプロセスは、これまで適切にロックダウンされておらず、どのような異常な動作が発生しているかを理解するための監査も行われていませんでした。
このOutbound SSH Connectionルールは、上述のシナリオ攻撃ベクトルを特定するために、あらゆるアウトバウンド接続を検出するOOTB(Out-of-the-Box)ルールの1つです。
- rule: Outbound SSH Connection desc: Detect Outbound SSH Connection condition: > ((evt.type = connect and evt.dir=<) or (evt.type in (sendto,sendmsg))) and ssh_port output: > Outbound SSH connection (user=%user.name server_ip=%fd.sip server_port=%fd.sport client_ip=%fd.cip) priority: WARNING tags: [network]
以下は、ファイルの整合性監視の例です。攻撃者が機密性の高いディレクトリに悪意のあるペイロードを投下したり、そのプロセスがビルダーマシンやポッド上で異常な動作をしたりした場合です。Falcoはこれを検知し、多くの方法で即座にチームに通知することができます(Falco Sidekickには40以上の出力が用意されています)。
特に以下のルールは、ビルドマシンやビルドポッド/コンテナを悩ませる特定のファイルアクセスと整合性に対処することができます。
これらのルールはコミュニティで作成され、Security Hubに追加されました。
サプライチェーンを保護する鍵は、コンテナが内部ポリシーに準拠していない場合、またはイメージ自体に準拠していない特定のものがある場合に、構築プロセスからコンテナをブロックすることです。
これは、CI/CDプロセスやビルドソフトウェア(Jenkins、Bamboo、Tektonなど)とイメージスキャンを統合することで実現できます。図 CI/CDプロセス
Sysdig Secureは、コンテナやKubernetesのライフサイクルのうち、ビルド、ラン、レスポンスの各段階にセキュリティとコンプライアンスを組み込みます。
ランタイムの保護のためのこの中核的なコンポーネントはFalcoです!
ここでは、Sysdig SecureのUIを使って、「root以下への書き込み」が検出された例を紹介します。クラスター名から、発生したポッド、プロセス、syscallに至るまで、どこで発生したかというコンテキストの詳細が含まれていることに注目してください。
干し草の山の中の針が見つかりました!Kubernetesのアクティビティとアラートサマリー
Sysdig activity audit dashboard.
思わず吹き出してしまう男性
Sysdig Secureは、ランタイムプロファイリングと呼ばれる機能も提供しています。これは、コンテナ内のネットワーク、プロセス、ファイルシステム、およびsyscallをsyscall自体の速度で調査します。
攻撃者について説明したことを覚えていますか?この場合、Sysdigのランタイムプロファイリングが逸脱を検知した場合、実行可能なレスポンスを作成し、実行されたすべてのコマンドへの完全なフォレンジックパスを持つことで、攻撃者が何をしたのかをよりよく理解することができます。Sysdig Secureイメージプロファイリング
最後に、チェックリストとして利用できるヒントをいくつか紹介します:
さらに詳しく知りたい方は、以下のリンクを参照してください:
そして、FalcoとSysdigの関連:
ソフトウェアサプライチェーンへの攻撃の脅威は現実のものとなっています。OSS/Commercial の世界におけるソリューションがなければ、危険にさらされた組織の一つとなり、設定ミスによるサイバー犯罪で失われた 5.2 兆ドル(Accenture 社による)をさらに増やすことになりかねません。
大まかに考えて、パイプラインのセキュリティだけでなく、基盤となるビルダーやコントロールプレーンのランタイムを保護するための組織全体の文化やツールを導入しましょう。
本記事へのフィードバックをいただいたDan Lorenc氏とStefano Chierici氏に感謝します。
Falcoについてもっと知りたい方は、こちらをご覧ください:
Sysdig Secureでは、他のオープンソースプロジェクトとともに、アウトオブボックスのルールでFalcoを拡張し、Kubernetesのセキュリティとの連携や管理をさらに容易にしています。30日間の無料トライアルに登録して、ご自身の目で確かめてください!