米国土安全保障省サイバーセキュリティ・インフラストラクチャーセキュリティ庁(CISA: Cybersecurity and Infrastructure Security Agency)は6月26日(米国時間)、「CISA and Partners Release Guidance for Exploring Memory Safety in Critical Open Source Projects|CISA」において、重要なオープンソースプロジェクトのメモリ安全性に関する調査レポートの概要を伝えた。

このレポートはCISA、米国連邦調査局(FBI: Federal Bureau of Investigation)、オーストラリアサイバーセキュリティセンター(ACSC: Australian Cyber Security Centre)、カナダサイバーセキュリティセンター(CCCS: Canadian Centre for Cyber Security)が共同で作成したもので、「Exploring Memory Safety in Critical Open Source Projects | CISA」から閲覧することができる。

  • CISA and Partners Release Guidance for Exploring Memory Safety in Critical Open Source Projects|CISA

    CISA and Partners Release Guidance for Exploring Memory Safety in Critical Open Source Projects|CISA

主要な分析結果

レポートではオープンソースセキュリティ財団(Open Source Security Foundation)から派生した172のプロジェクトについて分析、分析結果のポイントは次のとおり。

  • プロジェクトの52%にメモリ安全性が担保されない言語で記述されたコードが含まれている
  • プロジェクトのコード行数(LoC: Lines of Code)の55%はメモリ安全性が担保されない言語で記述されている
  • 大規模プロジェクトではメモリ安全性が担保されない言語の使用率に偏りが見られる。コード行数の多いプロジェクトの上位10件は、メモリ安全性がないコード行数がそれぞれ26%を超える。上位10件のうちメモリ安全性がない言語の使用率の中央値は62.5%で、4件のプロジェクトでは94%を超える
  • メモリ安全性を備える言語で記述された3つのプロジェクトの依存関係を分析すると、メモリ安全性が担保されない言語で書かれた他のコンポーネントに依存していることが確認された

レポートではメモリ安全性を備える言語で記述されたプロジェクトにおいても、メモリ関連の脆弱性を潜在的に含むことがわかったと結論づけている。また、メモリ安全性を備える言語はその機能を合理的な理由で無効にできるとして、メモリ安全性が担保された言語の使用が実際の安全性を証明するわけではないと説明されている。

下図は、オープンプロジェクトのサイズとメモリ安全性を比較したものだ。Linuxカーネルを含む大規模なプロジェクトは主にメモリ安全性が担保されていない言語を用いていることがわかる。

  • CISA and Partners Release Guidance for Exploring Memory Safety in Critical Open Source Projects|CISA

    オープンプロジェクト サイズとメモリ安全性の比較 引用:Exploring Memory Safety in Critical Open Source Projects

推奨事項

CISAはこのレポートを「特定のオープンソースソフトウェア」におけるメモリ安全性のリスク評価を組織に提供するために作成したとしている。また、すべての組織とソフトウェア開発業者に対し、メモリー関連の脆弱性を軽減するためにレポートの「Methodology and Results」を閲覧して理解することを推奨している。