Istioが2022年セキュリティ監査の結果を公開
Istioのセキュリティレビューで、Go標準ライブラリのCVEが発見されました。
Istioは、プラットフォームエンジニアが本番Kubernetes環境でセキュリティポリシーを適用するために信頼しているプロジェクトです。私たちはコードのセキュリティに細心の注意を払い、堅牢な脆弱性プログラムを維持しています。私たちの取り組みを検証するために、定期的に外部によるプロジェクトレビューを依頼しており、2回目のセキュリティ監査の結果を公開できることを嬉しく思います。
監査人の評価は、**「Istioは、セキュリティに対して強力かつ持続可能なアプローチを持つ、よくメンテナンスされたプロジェクトである」**というものでした。重大な問題は発見されませんでした。レポートのハイライトは、Goプログラミング言語の脆弱性の発見でした。
Cloud Native Computing Foundation が、8月にCNCFに加盟した後に提供された特典として、この作業に資金を提供してくれたことに感謝します。OSTIFによって調整され、ADA Logicsによって実行されました。
スコープと全体的な調査結果
Istioは2020年に最初のセキュリティ評価を受けました。データプレーンであるEnvoyプロキシは、2018年と2021年に個別に評価されています。そのため、Istio製品セキュリティワーキンググループとADA Logicsは、以下の範囲を決定しました。
- 今回と今後のセキュリティ監査の指針となる、正式な脅威モデルを作成する
- セキュリティ問題の手動コード監査を実施する
- 2020年の監査で発見された問題の修正を確認する
- Istioのファジングスイートを見直し、改善する
- IstioのSLSAレビューを実施する
今回も、レビューで重大な問題は発見されませんでした。評価では、11のセキュリティ問題が発見されました。高2件、中4件、低4件、情報1件です。報告されたすべての問題は修正済みです。
上記の観察に加えて、監査人は、Istioがセキュリティの取り扱いにおいて高いレベルの業界標準に従っていることを指摘しています。特に、彼らは以下の点を強調しています。
- Istio製品セキュリティワーキンググループは、セキュリティの開示に迅速に対応します
- プロジェクトのセキュリティに関するドキュメントは、包括的で、よく書かれており、最新の状態に保たれています
- セキュリティ脆弱性の開示は業界標準に従っており、セキュリティアドバイザリは明確かつ詳細です
- セキュリティ修正には、回帰テストが含まれています
解決策と教訓
Goのリクエストスマグリングの脆弱性
監査担当者は、IstioがHTTP/2 Over Cleartext(h2c)を使用してトラフィックを受け入れる可能性がある状況を発見しました。これは、HTTP/1.1で暗号化されていない接続を確立し、HTTP/2にアップグレードする方法です。h2c接続用のGoライブラリはリクエスト全体をメモリに読み込み、これを回避するにはリクエストをMaxBytesHandler
でラップする必要があると指摘しています。
このバグを修正する際に、Istio TOCメンバーのJohn Howardは、推奨される修正によってリクエストスマグリングの脆弱性が導入されることに気づきました。そのため、GoチームはCVE-2022-41721を公開しました。これは、この監査で発見された唯一の脆弱性です。
Istioはその後、全体でh2cアップグレードサポートを無効にするように変更されました。
ファイル取得の改善
発見された最も一般的な種類の問題は、Istioがネットワーク経由でファイルを取得することに関連するものでした(たとえば、Istio OperatorがHelmチャートをインストールする場合、またはWebAssemblyモジュールダウンローダー)。
- 細工されたHelmチャートは、ディスク容量を枯渇させたり(#1)、Operatorのポッド内の他のファイルを上書きしたりする可能性があります(#2)。
- エラーが発生した場合、ファイルハンドルが閉じられず、枯渇する可能性がありました(#3)。
- 細工されたファイルはメモリを枯渇させる可能性があります(#4および#5)。
これらのコードパスを実行するには、攻撃者はHelmチャートまたはWebAssemblyモジュールのURLを指定できる十分な権限を持っている必要があります。そのようなアクセス権があれば、悪用する必要はありません。すでに任意のチャートをクラスターにインストールしたり、任意のWebAssemblyモジュールをプロキシサーバーのメモリにロードしたりする可能性があります。
監査人とメンテナーはどちらも、Operatorはインストール方法として推奨されないことに注意してください。これは、クラスター内で高特権コントローラーを実行する必要があるためです。
その他の問題
発見された残りの問題は次のとおりです。
- 一部のテストコード、またはコントロールプレーンコンポーネントがlocalhost経由で別のコンポーネントに接続する場合、最小TLS設定が適用されませんでした(#6)。
- 失敗した操作は、エラーコードを返さない場合があります(#7)。
- 非推奨のライブラリが使用されていました(#8)。
- ファイルのコピーに使用されるライブラリでTOC/TOU競合状態が発生しました(#9)。
- デバッグモードで実行している場合、ユーザーはSecurity Token Serviceのメモリを枯渇させる可能性があります(#11)。
詳細については、完全なレポートを参照してください。
2020年レポートのレビュー
Istioの最初のセキュリティ評価で報告された18件すべての問題が修正されていることが判明しました。
ファジング
OSS-Fuzzプロジェクトは、オープンソースプロジェクトが無料のファズテストを実施するのを支援します。Istioは、継続的に実行されている63個のファザーでOSS-Fuzzに統合されています。このサポートは、2021年後半にADA LogicsとIstioチームによって構築されました。
評価では、「IstioはOSS-Fuzzで継続的に実行されるかなりのファズテストスイートを持つことから大きな恩恵を受けている」と述べており、セキュリティクリティカルなコードでさらなるファジングの恩恵を受けるいくつかのAPIを特定しました。この作業の結果、6つの新しいファザーが貢献されました。監査の終わりまでに、新しいテストは**30億回**以上実行されました。
SLSA
Supply chain Levels for Software Artifacts(SLSA)は、改ざんを防ぎ、整合性を向上させ、ソフトウェアパッケージとインフラストラクチャを保護するための標準と制御のチェックリストです。整合性保証を向上させる一連のレベルで構成されています。
Istioは現在、来歴アーティファクトを生成しないため、SLSAレベルの要件を満たしていません。SLSAレベル1に到達するための作業は現在進行中です。参加をご希望の場合は、Istio Slackに参加して、テストおよびリリースワーキンググループにご連絡ください。
参加する
Istio製品セキュリティに関与したり、メンテナーになりたい場合は、ぜひご参加ください!公開会議に参加して、問題を提起したり、Istioを安全に保つために行っていることについて学んでください。