責任ある脆弱性開示:脆弱性開示がオープンソースのセキュリティに与える影響
Asaf Biton
2020年4月7日
0 分で読めます脆弱性が見つかったら、できるだけ早く広く公表することが責任ある対応だと考えるのは、よくある誤解です。実際はその逆です。
責任ある脆弱性開示とは、サイバーセキュリティの分野で一般的に用いられる開示モデルです。ゼロデイ脆弱性をまず非公開で開示することで、コードやアプリケーションの保守担当者が修正プログラムやパッチをリリースするための時間を確保し、その後に脆弱性を公表します。そうしなければ、エンドユーザーのセキュリティを犠牲にすることになります。大切なのは、常にバランスです。脆弱性を非公開にしておく期間と、修正されないままアプリケーションが脆弱な状態にある期間の両方を最小限に抑えることを目指します。
このモデルは何年も前から存在しています。ソフトウェア企業が、自社のアプリケーションで脆弱性が見つかった場合の対応を説明する、独自の責任ある開示プロセスを詳述したポリシー文書を公開しているのは珍しくありません。しかし、オープンソースの世界では事情が少し異なります。
責任ある開示プロセスに従う際の課題
新たな脆弱性を発見するのは、とてもわくわくすることです。研究者が成果をできるだけ早く公開し、次の課題に取り組みたいと思うのも無理はありません。しかし、多くの場合、このプロセスには次のような不便さがあります。
オープンソースパッケージには、公式な開示ポリシーがないこともあります。
ポリシーがあっても、パッケージごとに内容が異なるのが一般的です。
手続きが長く複雑で、複数の段階を踏む必要があります。
CVE IDの割り当てなど、ほかの手続きが必要になる場合もあります。CNA(CVE採番機関)と呼ばれる権限を持つ機関がなければ、かなり面倒な作業になりかねません。
こうした理由から、今日では責任ある開示プロセスや協調的な開示プロセスに従わない研究者が少なくありません。代わりに脆弱性を公に開示する「簡単な」方法を選ぶと、緊急性が高まります。短期間で、しかもプレッシャーのもとでリリースされた修正は、不完全だったりバグを含んでいたりすることが多く、パッケージに脆弱性が残ったり、新たな攻撃経路が生まれたりする可能性があります。
適切な脆弱性開示プロセスに従うべき理由
妥当な開示プロセスに従えば、保守担当者は緊急性に追われることなく脆弱性を適切にトリアージできます。そのうえで、修正を行うかどうかを判断し、必要に応じてバックポートを準備できます。最後に、新しいリリースが公開された後、安全に脆弱性をユーザーへ公表できます。この一連のプロセスでは脆弱性の詳細を非公開に保つため、悪用を防げます。
Snykにおけるオープンソースの脆弱性開示
Snykは2019年、研究者が脆弱性を簡単に報告できるようにし、発見に尽力した研究者に適切なクレジットを付与することを目指して、脆弱性開示プログラムを開始しました。
当社のセキュリティチームは、すべての脆弱性報告を慎重にトリアージします。そのためには、対象となるプログラミング言語やパッケージ、その背景についての専門知識と理解が必要です。脆弱性の詳細を確認した後、チームは保守担当者と緊密に連携し、速やかな修正を目指します。また、CNA(CVE採番機関)として、問題へのCVE IDの割り当てと詳細なアドバイザリの公開を支援します。
2019年には、130件を超える脆弱性の開示を支援しました。注目すべき事例として、mongo-expressのRCEやyarnの任意のファイル書き込みがあります。
私たちは、独立した研究者やセキュリティ担当者、学術コミュニティと協力してきました。2020年の幕開けには、ジョンズ・ホプキンス大学のセキュリティラボチームと大規模なパートナーシップを開始し、50件を超える脆弱性の開示を支援しました。
ジョンズ・ホプキンス大学のチームは、新たな脆弱性の発見を自動化する方法を考案しました。私たちは共同で、多数の脆弱性に対応するための専用ソリューションを構築しました。このプロジェクトの詳細を掘り下げる記事を近日公開予定です。
始めるには?
報告には、専用フォームこちらをご利用ください。または、report@snyk.ioまでメールでご連絡いただくこともできます。報告を送信する前に、脆弱性開示ポリシーをご確認ください。


