先日、GoogleはAIベースのファジングツールOSS-Fuzzが26個のオープンソースコードライブラリで脆弱性を発見したと発表しました。その中には、OpenSSL暗号化ライブラリの脆弱性(中等度)も含まれていました。
Googleのオープンソースセキュリティチームはブログ記事で、「これらの脆弱性の発見は、自動化された脆弱性検出における新たなマイルストーンです。各脆弱性は、AIによって生成・強化されたファジングターゲットによって発見されました。」と述べています。
画像出典:AI生成画像、画像ライセンス提供元Midjourney
今回発見されたOpenSSLの脆弱性CVE-2024-9143(CVSSスコア4.3)は、メモリ境界外書き込みエラーであり、アプリケーションクラッシュやリモートコード実行につながる可能性があります。この問題は、OpenSSLの3.3.3、3.2.4、3.1.8、3.0.16、1.1.1zb、1.0.2zlなど複数のバージョンで修正されています。Googleは、この脆弱性はコードベースに約20年間存在していた可能性があり、従来の人間が作成したファジングターゲットでは検出できなかったと指摘しています。
またGoogleは、AI生成のファジングターゲットにより、272個のC/C++プロジェクトのコードカバレッジが向上し、37万行以上の新しいコードが追加されたと述べています。多くのエラーが見過ごされるのは、コードカバレッジが機能に欠陥がないことを意味しないためだとGoogleは説明しています。コードカバレッジだけでは、さまざまなフラグや設定によって異なる動作が引き起こされ、異なる脆弱性が露呈する可能性があるため、すべてのコードパスと状態を網羅することはできません。
このAI支援による脆弱性発見は、大規模言語モデル(LLM)が開発者のファジングワークフローを模倣する能力の高さにも支えられています。自動化レベルがさらに向上しています。さらにGoogleは今月初め、LLMベースのフレームワークBig SleepがSQLiteオープンソースデータベースエンジンにおけるゼロデイ脆弱性の検出に役立ったことも明らかにしています。
自社のコードベースのセキュリティを向上させるため、GoogleはコードをRustなどのメモリセーフ言語に移行し、既存のC++プロジェクトにおける空間メモリ安全性の脆弱性を修正する取り組みを進めています。これには、安全なバッファへの移行とlibc++の強化が含まれ、標準C++データ構造に境界チェックを追加することで、重要な空間安全性の脆弱性のクラスを除去します。Googleは、これらの改善によるパフォーマンスへの影響はごくわずかで、平均0.30%に過ぎないと述べています。
Googleはさらに、最近オープンソースの貢献者によって追加されたlibc++の強化により、境界外アクセスなどの脆弱性を本番環境で検出することを目的とした一連のセキュリティチェックが導入されたと強調しています。C++言語では完全なメモリ安全性を達成することはできませんが、これらの改善は間違いなくリスクを軽減し、ソフトウェアの信頼性と安全性を高めます。
要点:
🌟 GoogleのOSS-Fuzzツールが26個のオープンソースプロジェクトで脆弱性を発見、その中には約20年間存在していたOpenSSLの脆弱性も含まれる。
🔍 AI生成のファジングターゲットにより、272個のC/C++プロジェクトのコードカバレッジが向上し、37万行以上の新しいコードが追加された。
🔒 Googleはコードをメモリセーフ言語に移行し、libc++の強化などを通じてC++プロジェクトのセキュリティを向上させている。