CloudNativeSecurityConから、WebAssemblyのパッケージレジストリプロトコルWargのセッションを紹介

2023年6月20日(火)
松下 康之 - Yasuyuki Matsushita
CloudNativeSecurityConから、WebAssemblyのパッケージの真正性を担保するパッケージレジストリーのプロトコルWargを説明したセッションを紹介する。

CloudNativeSecurityCon 2023から、WebAssemblyのパッケージの真正性を担保するための新しいプロジェクトであるWargのセッションを紹介する。これはSingleStoreのKyle Brown氏が行ったセッションで「Package Transparency for WebAssembly Registries」と題されている。約20分間を使ってWargのコアとなっているLogとMapの解説を行っている。

●動画:Package Transparency for WebAssembly Registries - Kyle Brown, SingleStore

ここでは内部の動きを中心に紹介しているが、よりシンプルに理解するためには2022年11月にデトロイトで行われたKubeCon+CloudNativeConの共催イベントとして開催されたCloud Native WASM Dayのライトニングトークの内容が適しているだろう。まずはその動画を解説したい。これもKyle Brown氏とCosmonicのBailey Hayes氏が行っているセッションだ。ちなみにCosmonicはwasmCloudというWebAssemblyをベースにしたクラウドサービスを提供している、WebAssemblyをリードするベンチャーの1社である。

●動画:Lightning Talk: SIG-Registries and Standardizing Package Management in WebAssembly Bailey Hayes and Kyle Brown

9分という短い時間の中でWebAssemblyのパッケージの真正性を担保する必要性について解説しているが、モダンなアプリケーションに複数のオープンソースソフトウェアが含まれてビルドされるという現在の状況において、その真正性を保証するための仕組みがWebAssemblyにおいても必要だと言うのがこのWargが開発されている背景である。スライドは以下から参照できる。

●スライド(PDF):Wasm Day - SIG-Registry Talk

これはWebAssemblyがホストされているBytecode AllianceのSIG-Registryによる発表だが、Cloud Native WASM Dayで発表されていることからWASMに興味のあるエンジニアには有用な情報と言える。

デトロイトで行われたライトニングトークの際のスライド

デトロイトで行われたライトニングトークの際のスライド

ここで前提知識として、RegistryとRepositoryについて整理しておこう。Registryは認証された結果を保持するインデックス、Repositoryはパッケージ本体が保存される保管場所であり、実際にはクラウドサービスでもオンプレミスのサーバーでもかまわないニュートラルな仕様になっている。Wargはオープンソースとして開発されているWebAssemblyパッケージのためのRegistry Protocolである。

この動画の中では例としてアプリケーションの中でlibURL、Authz、Envoyなどが使われている場合にそれぞれのコンポーネントのバージョンが上がっていく時に異常なコードが紛れ込んでいないかなどをハッシュを作り、それを常に追記していくLogを使うことで追跡ができると説明。

Registryの構造。常に変更とともに追記していくことで追跡が可能

Registryの構造。常に変更とともに追記していくことで追跡が可能

またそれぞれのパッケージの組み合わせをMapとして使い、LogとMapを組み合わせることで真正性と透明性を確保できると説明している。

LogとMapを組み合わせることで確実に正しいシグネチャーが行われたパッケージであることが確認できる

LogとMapを組み合わせることで確実に正しいシグネチャーが行われたパッケージであることが確認できる

途中で異常なコードが紛れ込むという攻撃を受けても、検証(Audit)を行うことでコードの正しさが確認できる。単に追記型のLogだけではなくMapと組み合わせることで確実に正しさを確認できるというのがWargのコアコンセプトだ。

途中で異常なコードが挿入されてもAuditで不正を検出し、更新することができる

途中で異常なコードが挿入されてもAuditで不正を検出し、更新することができる

ではここからCloudNativeSecurityConで行われたKyle Brown氏のセッションを見て行こう。

Kyle Brown氏のセッションのタイトルは「Package Transparency for WebAssembly Registries」

Kyle Brown氏のセッションのタイトルは「Package Transparency for WebAssembly Registries」

最初に、WebAssemblyとは何かについて簡単に解説。

WebAssemblyはコンパイルされたフォーマットを指すことを紹介

WebAssemblyはコンパイルされたフォーマットを指すことを紹介

その後でWebAssemblyがブラウザーだけのテクノロジーではなく、すでにバックエンドやエッジでも使われていることを紹介。

SingleStore、Cosmonic、Fastly、Fermyonなどで使われているWebAssembly

SingleStore、Cosmonic、Fastly、Fermyonなどで使われているWebAssembly

Microsoftがフライトシミュレーターの中でDLLを使わないためにWebAssemblyを使っているのは有名な例だろう。実際にSDKの中のドキュメントにも明記されている。

●参考:SDK Documentation WebAssembly

そしてRegistryの仕事として、パッケージに対して名前とバージョンというメタデータを使ってリリースを定義することであると説明。

Registryの仕事はパッケージにメタデータを使ってリリースを一意に指定すること

Registryの仕事はパッケージにメタデータを使ってリリースを一意に指定すること

またパッケージ自体は、どのような形でどこに保存されるのかを限定されないと説明。ここでメタデータと実体が分離されることを解説している。

メタデータとパッケージ本体は分離されて管理される

メタデータとパッケージ本体は分離されて管理される

Registryはパッケージに異常なコードが追加された時にそれを追跡できる機能が必要であるとして、ここからBrown氏のLogとMapの解説が始まった。

追記だけを行うパッケージLog

追記だけを行うパッケージLog

Logは追記だけを行う仕様になっており、変更されたことが記録として残り続ける形式となっていることを説明した。

LogとMapを組み合わせてチェックポイントとして署名され記録される

LogとMapを組み合わせてチェックポイントとして署名され記録される

ここでLogとMapの組み合わせによって必要とするパッケージの真正性が確認できると説明。ここではチェックポイント自体も追記型の記録として保存される。

チェックポイントもLogとして記録される

チェックポイントもLogとして記録される

ここでパッケージの透明性を確保するために必要な3つの要件について、再度確認の意味で解説を行った。ここではパッケージ更新のログが追記型で残されること、暗号技術によって生成されたキーで改変を検出できること、そしてパッケージ検査が行えることを再度強調し、そのためにRegistryのプロトコルとしてWargが開発されていると説明した。

パッケージレジストリーの要件の整理

パッケージレジストリーの要件の整理

最後にこのセッションのまとめとして、WebAssemblyの紹介、パッケージレジストリーはインデックスであり、パッケージリポジトリーではないこと、パッケージの透明性確保のためにCA(認証局)の仕組みを参考にしていること、パッケージレジストリーによってWebAssemblyのパッケージの安全性が確保できることを解説してセッションを終えた。セッション終了後も参加者から多くの質問が寄せられていたが、Brown氏は丁寧に回答を行っていた。

Warg自体はプロトコルの定義であり、実装はそれぞれのビルドツールやCIツール、リポジトリーサービスの提供者側がそれぞれ行っていくことになるのだろう。Bytecode AllianceのGitHubにはリファレンス実装のページが用意されている。

地味なソフトウェアだがこれから必要性が高くなることが予想され、開発も徐々に活発になることが予想される。注目していきたいプロジェクトだ。

●参考:Warg公式ページ

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

セキュリティイベント
第5回

写真で見るCloudNativeSecurityCon 新興ベンダー山盛りのショーケース

2023/6/30
CloudNativeSecurityConから、新興セキュリティベンダーを中心にショーケースに出展しているベンダーを紹介する。
セキュリティイベント
第4回

CloudNativeSecurityCon、SysdigのCTOにインタビュー

2023/6/28
CloudNativeSecurityConから、コンテナランタイムセキュリティのOSS、FalcoのクリエイターにしてSysdigのCTOであるLoris Degioanni氏へのインタビューを紹介する。
セキュリティイベント
第3回

CloudNativeSecurityCon、SUSEのセキュリティ部門のトップにインタビュー

2023/6/21
CloudNativeSecurityConから、SUSEのセキュリティ部門のトップでありNeuVectorの創業者でもあるFei Huang氏にインタビューを実施した。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています