OSS における脆弱性の情報開示:悪用を防ぐための工夫をメンテナたちに伝えたい

Open-source vulnerability disclosure: Exploitable weak spots

2023/11/09 HelpNetSecurity — オープンソース・プロジェクトの脆弱性開示プロセスの欠陥が攻撃者に悪用され、パッチが提供される前に攻撃を仕掛けるために必要な、情報を収集される可能性があると、Aqua Security の研究者たちが懸念している。”0.5-Day” の脆弱性は、メンテナには知られており、その情報は GitHub や NVD (National Vulnerability Database) に公開されているが、公式な修正プログラムが存在しない状況を指す。”0.75-Day” の脆弱性は、公式な修正プログラムは存在しているが、CVE 番号や CPE 識別子は存在しない状態を指す。したがって、脆弱性スキャンツールによる脆弱なコンポーネントの検出が不可能であり、パッチ適用の必要性に、セキュリティ・チームは気が付かない。


“0.5-Day” と “0.75-Day” の脆弱性から生じるリスクとは?

Aqua のセキュリティ研究者である Ilay Goldman と Yakir Kadkoda は、「攻撃者は、GitHub や NVD などの公開プラットフォーム上で、新たな脆弱性が形成/公開さたことを示す、あらゆる指標を収穫できる。プルリクエストやコミットに加えて、issue に見られるメッセージやメタデータを悪用することで、攻撃者は脆弱なコードを参照し、報告された PoC エクスプロイトを悪用し、さらには独自のエクスプロイトを作成できる」と説明している。

脆弱性が “0-Day” (メンテナが知らない状態) から、”1-Day” (メンテナが知り、CVE があり、パッチがある状態) に切り替わるまでの時間が短ければ、エクスプロイトを作成/悪用するために必要な公開情報を、攻撃者が見つけるリスクは小さい。しかし、Log4Shell の場合は、その期間が約 10日間だった。さらに、この期間が数カ月にも及べば、大きなチャンスを与えることになる。

オープンソース・プロジェクト・メンテナへの呼びかけ

研究者たちは、「このような、脆弱性開示プロセスにおける欠陥を、攻撃者たちが積極的に悪用していると示唆する具体的な証拠はないが、オープンソース・プロジェクトから、彼らが情報を収集する可能性があると考えることは妥当だ。彼らが、それらのデータを使って、プロジェクトを深く理解し、潜在的な脆弱性を探している可能性がある。そのような脆弱性を、大規模に特定することが可能であることを実証した」と指摘している。

彼らは、「公式パッチがリリースされる前に、CVE が NVD にアップロードされることがある。NVD の API を利用して、最近もプッシュされた CVE を取得し、GitHub の参照を検索することで、NVD が参照した commit/PR が GitHub 上でリリースされているかどうかをチェックできる」と説明している。

さらに研究者たちは、コミットやプルリクエストが有用な情報を保持しているかどうかの、最終的なチェックはユーザー側で行うことになるが、それを可能にする PoC ツールもリリースしている。

Open-source vulnerability disclosure

とは言え、研究者たちのゴールは、攻撃者の行動を簡単にすることではない。その反対に、攻撃者にとっての機会の窓を最小化/遮断するよう、彼らはプロジェクトのメンテナに働きかけたいのだ:

  • 脆弱性管理のための安全なプロセスを概説するための、責任のある情報公開ポリシーを作成する (まだ無い場合)。
  • GitHub の非公開レポート機能を活用して、脆弱性を目立たないように管理する。
  • コードコミット/課題/プルリクエストを定期的にスキャンして、トリガーとなる単語をチェックすることで、早期の暴露を防ぐ。