ファジング監査結果 ¶
公開日: 2023-07-13 , 改訂日: 2024-01-17
ファジング監査結果¶
著者: Adam Korczynski, セキュリティエンジニア @ Ada Logics
Knative は、ファジングセキュリティ監査の完了を発表できることを嬉しく思います。監査は Ada Logics によって実施され、CNCF が CNCF ランドスケープにファジングを導入するためのイニシアチブの一環です。監査は 2022 年後半から 2023 年初頭にかけて数か月にわたり、3 つの Knative サブプロジェクト用に 29 個のファザーが作成されました。ファザーは、修正されたサードパーティの依存関係で 1 つの問題を発見しました。
監査の完全なレポートはこちらをご覧ください: Knative ファジングレポート。
監査では、次の 3 つの Knative サブプロジェクトを対象としました
ファジング¶
ファジングは、バグやセキュリティの問題を見つけるために、疑似ランダムなデータをターゲット API に渡すことによってソフトウェアをテストする方法です。疑似ランダムデータは、時間の経過とともにコードベースのより多くの部分を明らかにするテストケースを生成するファジングエンジンによって作成されます。このエンジンは、カバレッジガイドアプローチを使用し、各反復からのフィードバックを使用して新しいテストケースを変化させます。このタイプのファジングは「カバレッジガイドファジング」と呼ばれ、メモリセーフ言語とメモリアンセーフ言語の両方で実装されたソフトウェアプロジェクトでバグを見つけるのに効果的でした。最近では、ファジングによって、CNCF が後援したファジング監査中に Notation-go および Crossplane のセキュリティ脆弱性が発見されました。詳細については、こちらをご覧ください。
Knative のファジング¶
堅牢なファジングスイートの重要な要素は、ファザーが継続的に実行されるようにすることです。すべての Knative ファザーは、OSS-Fuzz (Google のオープンソースプラットフォームで、重要なオープンソースプロジェクトのファザーを継続的に豊富なリソースで実行します) で継続的に実行されます。Knative のファジング監査は、Knative を OSS-Fuzz に統合することから始まり、監査担当者はその統合にファザーを追加しました。これにより、監査中にファザーを継続的に実行できるようになり、監査が完了した後も継続されます。
監査中に開発されたファザーは、Knative エコシステムのさまざまな部分をカバーしています。これらには以下が含まれますが、これらに限定されません。
- リソースの検証: Knative の 検証ファザーは、疑似ランダム化されたリソースを作成し、検証ルーチンをテストします。ファザーは 23 種類の異なるリソースタイプの検証をテストします。
- スケジューラプラグイン: Knative Eventing のすべての スケジューラプラグインがカバーされています。
-
改善されたラウンドトリップファザー: ファジング監査の前に、Knative にはカスタムリソースのデシリアライズをテストするためのファジテストがありました。これらは、Kubernetes のアップストリームラウンドトリップテストに対して実行されました。監査中、Ada Logics は、アップストリームラウンドトリップテストよりも 3.5 倍高速に実行され、それによってファザーがより多くのコードを探索できるようにする、改善されたラウンドトリップテストを作成しました。Knative のラウンドトリップファザーも継続的に実行されておらず、監査担当者は改善されたラウンドトリップファジテストを Knative の OSS-Fuzz 統合に追加しました。
-
依存関係: Knative のファザーは、Knative からのデータを大量に処理する、いくつかのサードパーティの依存関係をカバーしています。
- Eventing フィルター: フィルターファザーは、一連の疑似ランダムなフィルターを作成し、それぞれの
apply
API を呼び出します。
すべてのファザーは、CNCF のファジングリポジトリに存在します。OSS-Fuzz のビルドサイクル中に、そこからそれらをプルし、最新のメインの Knative ブランチに対して実行します。
発見¶
ファザーは監査中に 1 つの問題を発見しましたが、Knative プロジェクトではこれは素晴らしいことです。ファザーは引き続きターゲットコードを探索しており、将来問題を発見する可能性があります。それが起こった場合、OSS-Fuzz は、再現テストケースとスタックトレースを含む詳細なバグレポートでメンテナーに通知します。OSS-Fuzz は電子メールでメンテナーに通知し、OSS-Fuzz のバグトラッカーで修正された問題を自動的に解決済みとしてマークします。
Knative への貢献¶
Knative はオープンソースであり、コミュニティの貢献を受け入れています。エコシステムに貢献したい場合は、コミュニティリポジトリから始めるのが最適です。