ソフトウェアサプライチェーンのセキュリティに関する情報は数多く存在し、その数は増え続けています。これらの情報は、ソースやビルドに関する基本的な事項をカバーしているが、ソフトウェアサプライチェーンのライフサイクル全体をカバーしているのでしょうか?ランタイムのビルド環境は保護されていますか?アプリケーションのポストデプロイはランタイムで保護されているでしょうか?
この記事では、これらの概念を説明するだけでなく、以下の点についても説明していきます。
- ソフトウェアサプライチェーン攻撃、SBOM、大統領令とは何か?
- ソフトウェアサプライチェーンの保護に最も影響を与えるFalcoとSysdig Secureの機能
- ソフトウェアサプライチェーンに保護を導入する際に考えるべきヒント、あなたやあなたのチームが攻撃に対処できるようにするために必要なこと

ソフトウェアサプライチェーン攻撃とは
ソフトウェアサプライチェーン攻撃は、サイバー脅威アクターがソフトウェアベンダーのネットワークに侵入し、悪意のあるコードを使用して、ベンダーが顧客に送信する前のソフトウェアを危険にさらすことで発生します。この攻撃を受けたソフトウェアは、顧客のデータやシステムを侵害します。ソフトウェアサプライチェーンセキュリティとは?
サプライチェーンセキュリティ活動は、サプライチェーンのセキュリティを強化することを目的としています。
ソフトウェアサプライチェーンのイメージ図
大統領令とは何ですか?
大統領令(EO)は、NISTを含む複数の機関に対し、ソフトウェアサプライチェーンのセキュリティと整合性に関連するさまざまな取り組みを通じて、サイバーセキュリティを強化することを求めています。EOのセクション4では、NISTに対し、民間企業、学界、政府機関などから意見を募り、ソフトウェアサプライチェーンのセキュリティを強化するための既存の規格、ツール、ベストプラクティス、その他のガイドラインを特定、または新たに開発するよう指示しています。
これらのガイドラインには以下が含まれます:
- ソフトウェアのセキュリティを評価する基準
- 開発者および供給者自身のセキュリティ慣行を評価するための基準
- セキュリティ対策に適合していることを証明するための革新的なツールや方法
SBOMとは何ですか?
ソフトウェア部品表(SBOM)とは、ソフトウェアを構成する部品のリストのことです。ソフトウェアベンダーは、多くの場合、オープンソースや商用のソフトウェアコンポーネントを組み立てて製品を作成します。SBOMは、製品に含まれるコンポーネントを記述したものである。これは、食品のパッケージに記載されている成分表に似ています。アレルギー反応を引き起こす可能性のある食品を避けるためにラベルを参照するように、SBOMは、企業が組織に害を及ぼす可能性のあるソフトウェアの消費を避けるのに役立ちます。
肝心な点は?:
- SBOMはセキュリティにとって重要である。
- しかし、SBOMを信頼できるのは、そのSBOMを生成したプロセスを信頼できる場合だけです。
- つまり、ビルド環境には安全なランタイムが必要なのです。この点については、以下で詳しく説明します。
Falcoはどこに位置するのか?
クラウドネイティブランタイムセキュリティプロジェクトであるFalcoは、デファクトのKubernetesの脅威検出エンジンです。Falcoは2016年にSysdigによって作成され、インキュベーションレベルのプロジェクトとしてCNCFに参加した最初のランタイムセキュリティプロジェクトです。Falcoは、ランタイムでアプリケーションの予期せぬ動作を検出し、脅威を警告します。それでは、Falcoがどのようにしてこれを実現しているのかを説明します。Falcoは、システムコールを使って、以下のようにしてシステムの安全性を確保し、監視します:
- ランタイムにおいてカーネルからLinuxのシステムコールを解析します。
- 強力なルール エンジンに対してストリームをアサートします。
- ルールに違反したときに警告する。
攻撃のベクトル:コントロールプレーン/ビルダーコンポーネントのランタイムセキュリティ
我々は、攻撃者が最も共通点の多い、ビルドマシンやビルドポッドを経由して、数ヶ月に渡って侵入に成功しているのを見てきました。私たちは、攻撃とは、攻撃者がビルドやコンテナの実行中に悪意のあるコードを投下し、外部ネットワークに接続して、会社の重要な資産を文字通りチェックされずに送信することだと説明しました…. (これらのマシンやプロセスは、これまで適切にロックダウンされておらず、どのような異常な動作が発生しているかを理解するための監査も行われていませんでした。この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以上の出力が用意されています)。
特に以下のルールは、ビルドマシンやビルドポッド/コンテナを悩ませる特定のファイルアクセスと整合性に対処することができます。
- Detect New File:新しいファイルが作成されたときに検出します。
- Detect New Directory:新しいディレクトリが作成されたときに検出します。
- Detect File Permission or Ownership Change: ファイルのパーミッションやオーナーシップの変更を検出します。
- Detect Directory Change: ディレクトリの変更を検出します。mkdir, rmdir, mvdir, mv などのディレクトリの変更を検出します。
- Kernel Module Modification: カーネルモジュールの変更を検出します。modprobeやinsmodによるカーネルモジュールの変更を検出します。
- Node Created in Filesystem: mknodでノードが作成されたことを検出します。
- Listen on a new port: 新しいポートが待ち受けていることを検出します。
Sysdig Secure
サプライチェーンを保護する鍵は、コンテナが内部ポリシーに準拠していない場合、またはイメージ自体に準拠していない特定のものがある場合に、構築プロセスからコンテナをブロックすることです。これは、CI/CDプロセスやビルドソフトウェア(Jenkins、Bamboo、Tektonなど)とイメージスキャンを統合することで実現できます。

Sysdig Secureは、コンテナやKubernetesのライフサイクルのうち、ビルド、ラン、レスポンスの各段階にセキュリティとコンプライアンスを組み込みます。
ランタイムの保護のためのこの中核的なコンポーネントはFalcoです!
ここでは、Sysdig SecureのUIを使って、「root以下への書き込み」が検出された例を紹介します。クラスター名から、発生したポッド、プロセス、syscallに至るまで、どこで発生したかというコンテキストの詳細が含まれていることに注目してください。
干し草の山の中の針が見つかりました!



Sysdig Secureは、ランタイムプロファイリングと呼ばれる機能も提供しています。これは、コンテナ内のネットワーク、プロセス、ファイルシステム、およびsyscallをsyscall自体の速度で調査します。
攻撃者について説明したことを覚えていますか?この場合、Sysdigのランタイムプロファイリングが逸脱を検知した場合、実行可能なレスポンスを作成し、実行されたすべてのコマンドへの完全なフォレンジックパスを持つことで、攻撃者が何をしたのかをよりよく理解することができます。

ソフトウェアサプライチェーンゲームを向上させるための全体的なヒント
最後に、チェックリストとして利用できるヒントをいくつか紹介します:- セキュリティの専門家だけでなく、開発者や運用者にもセキュリティ文化を醸成すること。セキュリティを重視し、依存関係にパッチを当てることに熱心なチームには報酬を与えること。
- cosign(sigstore)でソフトウェアに署名する。
- ハードウェアレベルのセキュリティを実装する(tpmなどなど!)。
- システムにパッチを適用し、コントロールプレーンのコンポーネントを最新の状態にする(CISのベンチマーク機能)。
- パイプラインのセキュリティを確保する
- コントロールプレーン/ビルドサーバ、および実行中のアプリケーションにランタイムセキュリティ(Falco/Sysdig Secure)を導入する。
- https://dlorenc.medium.com/policy-and-attestations-89650fd6f4fa
- https://cd.foundation/blog/2020/01/15/getting-serious-about-open-source-security/
- https://www.cisa.gov/sites/default/files/publications/defending_against_software_supply_chain_attacks_508_1.pdf
- https://www.nist.gov/itl/executive-order-improving-nations-cybersecurity
- Tag-Security Whitepaper on Software Supply Chain
そして、FalcoとSysdigの関連:
- Visit Falco.org
- https://sysdig.com/blog/securing-tekton-pipelines-openshift/
- https://falco.org/blog/falcosidekick-response-engine-part-4-tekton/
- https://sysdig.jp/blog/image-scanning-admission-controller/
まとめ
ソフトウェアサプライチェーンへの攻撃の脅威は現実のものとなっています。OSS/Commercial の世界におけるソリューションがなければ、危険にさらされた組織の一つとなり、設定ミスによるサイバー犯罪で失われた 5.2 兆ドル(Accenture 社による)をさらに増やすことになりかねません。大まかに考えて、パイプラインのセキュリティだけでなく、基盤となるビルダーやコントロールプレーンのランタイムを保護するための組織全体の文化やツールを導入しましょう。
本記事へのフィードバックをいただいたDan Lorenc氏とStefano Chierici氏に感謝します。
参加してください!
Falcoについてもっと知りたい方は、こちらをご覧ください:- Falco.orgをご覧ください。
- GitHubでFalcoプロジェクトをチェックしてください。
- Falco コミュニティに参加する。
- Falco Slackでメンテナに会う。
- ツイッターで @falco_org をフォローする。