KubeCon NA 2021、ソフトウェア開発工程のタンパリングを防ぐSLSAを解説
KubeCon/CloudNativeCon NA 2021から、2021年10月12日にプレカンファレンスとして行われたSupplyChainSecurityConのセッションを紹介する。これは「An Overview on SLSA」と題されたセッションで、プレゼンターはGoogleのTom Hennen氏とVMwareのJoshua Lock氏だ。
動画のURL:An Overview on SLSA
SLSAは「Supply-chain Levels for Software Artifacts」の略で、ソフトウェア開発から本番環境でのデプロイメントまでのステップ全体を攻撃者から守るためのフレームワーク、もしくは準拠するべきガイドラインと言えるだろう。プロジェクトとしてはThe Linux Foundationによってホストされている。
従来、セキュリティを高めるためにインフラストラクチャーを守るファイアウォールやプロセス間通信を暗号化するmTLS、ポリシーを用いたアクセスを制御など、さまざまな手法で攻撃からIT資産を守るための努力が行われてきた。しかしSLSAはソフトウェア開発から実装までのプロセスに注目して、どの段階でも「確実に真正であること=第3者によって破壊されていないこと」を実証することで、すべてのプロセスが意図された通りに開発、ビルド、パッケージ、デプロイされたことを確認するためのフレームワークだ。
SLSAの前身は、Binary Authorization for Borg(BAB)と呼ばれる成果物に対する強制適用チェックシステムである。BorgはGoogle社内のコンテナオーケストレーションツールであり、Kubernetesの前身と言えるものだ。BABはGoogle社内のデベロッパーによるインサイダーリスクを解消するためのものである。詳しくは以下のGoogleのブログを参照されたい。
GoogleがSLSAを紹介するブログ:Introducing SLSA, an End-to-End Framework for Supply Chain Integrity
BABについて:Binary Authorization for Borg: コードの出所を確認してコード ID を実装する方法
このスライドでは、コードを開発するデベロッパーによるビルドのプロセスを経てパッケージ化された成果物が、最終的に利用されるまでに8つのポイントで攻撃が行われる可能性があるとして、すべてのプロセスにおいて成果物を攻撃から守る必要があることを解説している。
SLSAは4つのレベルでソフトウェアサプライチェーンに対する攻撃(ここではタンパリングと称されている)から守ることを目的としている。ビルドプロセスにおけるドキュメント化が必須となるレベル1から、ソースコードのレビューを2者によって受ける必要があるレベル4まで、守るべき項目はさまざまだ。
同じ内容がSLSA.devという公式サイトにも掲載されている。
SLSA公式サイト:Security levels
ここから「Provenance(来歴)」と「Attestation(証明)」という目新しい言葉が出てくるが、それぞれ成果物がどのように生成されたのかを確認することがProvenance、シグネチャーなどで認証した結果がAttestationと覚えておけば良いだろう。
このスライドではCNCFのサンドボックスプロジェクトであるin-totoを例に、makefileに対してサプライチェーンとして必要な情報を追加する設定ファイル、SLSAでは「レイアウト」と呼ばれるコメント付きのJSON記述による設定を解説している。
SLSAがソフトウェア開発から実装までの全体のプロセスを対象にしていることは、次のスライドでも理解できる。ここではソースコードを生成する段階とそれをビルドしてパッケージ化する段階に分けて、それぞれに信頼の境界が発生することを解説した。
その上で攻撃もしくは脅威と言っても良いかもしれないが、タンパリングを起こすモノを「グレムリン」と称して、どのような状況において脅威が発生するのか、それをSLSAがどうやって防ぐのかを解説するフェーズに移った。
このスライドではコンテナレジストリーから悪意のあるコードが追加される脅威に対して、SLSAのポリシーエンフォーサーが食い止めるという例を紹介している。
ここで紹介されたスライドでは「具体的に何をしなければいけないのか?」についての解説はされていないが、プロセス全体を見通して何が行われているのかを可視化し、すべての段階でデジタルシグネチャーによる証書を要求するという作業が発生することだけは確かだ。
SBOM(Software Bill of Materials)にはSPDXとCycloneDXが存在している。一方SLSAではその実装であるin-totoが存在感を増しているが、健全なオープンソースコミュニティとなるためには、競争相手となるプロジェクトが必要かもしれない。周辺のツールの充実やCI/CDへの組み込み、監査の手法など、これからエコシステムの拡大とともにユースケースが拡がることを期待したい。
in-totoの公式ページ:A framework to secure the integrity of software supply chains
CNCFのサンドボックスプロジェクトページ:https://www.cncf.io/projects/in-toto/
SLSAへの参加を呼びかけるページ:https://slsa.dev/getinvolved
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- OpenSSFがソフトウェアのサプライチェーンセキュリティのための仕様「SLSA(サルサ)」のVersion 1.0を公開
- KuberCon/CloudNativeCon NA 2021開催、3日間のキーノートを紹介
- CNSC 2022、SBoMの概要と未来を展望するセッションを紹介
- OpenSSF Day Japan開催。中国からの脅威から新しいOSSプロジェクトの紹介までを総括
- KubeCon Europe 2024にて、グラフを用いてSBOMを可視化するGUACのコントリビューターにインタビュー
- OpenSSFを拡大・支援するため1,000万ドルの新規投資を調達、「The 2021 Open Source Jobs Report」を公開、ほか
- LFとOpenSSFがオープンソースのセキュリティに関する会議「Open Source Software Security Summit II」を開催、ほか
- Google、「サプライチェーン攻撃」に対する注意喚起、すべてのインターネットユーザにセキュリティの重要性
- KuberCon NA 2021、Kubernetesリリースチームが解説するSBOMのセッションを紹介
- CNCFが2021年のプロジェクトやユーザーに関する最新レポート「CNCF 2021 ANNUAL REPORT」を公開、よりクラウドネイティブの採用が増加