修正が利用可能になる前に脆弱性の詳細を公開すると、防御側よりも攻撃側に有利になります。セキュリティ機能は、非公開のすべての調査結果の詳細をCoroid内に保持し、いつそれらを公開するかを決定できるのは権限を持つユーザーのみです。
公開と非公開
各調査結果は以下の2種類に分類されます:
- 公開:脆弱性がすでに公開されている場合。例えば、公開済みのアドバイザリーがある依存関係などです。修正用のプルリクエストではそのアドバイザリー名が記載されることがあります。
- 非公開:上記以外のもの。例えば監査やCoroidレビュー、コードルールで自身のコード内で発見された問題、漏洩した認証情報などです。
調査結果が公開されるのは、撤回されていない公開済みのアドバイザリーにリンクされている場合、またはオーナーや管理者がそのプライベートな修正を公開した場合のみです。
公開のゲート
CoroidがCoroid外に公開するすべての内容は、まず公開のゲートを通過します。レビュー機関、インラインレビューコメントや要約、チェック結果とその注釈、pull requestのタイトルや説明、コミットメッセージ、課題コメント、Slackやメールメッセージ、エクスポートなどが対象です。このゲートでは、テキスト内のセキュリティ問題(確認済みか否かを問わず)を検出します。
パブリックリポジトリ、またはCoroidがその可視性を確認できないリポジトリの場合、非公開の調査結果はリンク付きの中立的な行に置き換えられます:
Coroidがセキュリティ上の問題の可能性を発見しました。詳細はCoroidに記載されています。
プライベートリポジトリの場合、テキストがそのまま公開されます。まだ確認されていない調査結果には「未検証のセキュリティ主張:Coroidがまだ検証していません」とマークされます。
認証情報は常にどこでも編集されます。詳細は漏洩したシークレット。
リポジトリの可視性
Coroidがリポジトリをプライベートと判断するのは、GitHubのイベントから、またはGitHubに直接問い合わせて得た、1時間以内の明確で最新の情報でプライベートであると判断された場合のみです。内部リポジトリはパブリックとみなされます。Coroidが判断できない場合は、そのリポジトリをパブリックと扱います。
通知とエクスポート
- ベル:非公開の調査結果の場合、ベルには深刻度とプロジェクト名のみが記載されます。例えば「重大な調査結果に対処が必要」といった内容で、セキュリティ機能内の該当調査結果へのリンクが含まれます。
- Slackとメールには調査結果に対処が必要であることとリンクのみが記載され、脆弱性やコードの詳細は含まれません。
- エクスポート:CycloneDXエクスポートでは、公開済みの調査結果のみがリストアップされます。組織設定のバンドルには調査結果は一切含まれません。
パブリックリポジトリでの修正
プライベートリポジトリでは、非公開の調査結果に対する修正は通常のpull requestとして処理されます。そのコミットメッセージや説明には攻撃に関する内容ではなく修正内容が記載されます。
パブリックリポジトリ、またはCoroidがその可視性を確認できないリポジトリの場合、パブリックなpull request、ブランチ、コミットによって修正前に問題が露呈してしまうため、Coroidはそこにそのような修正をコミットしません。修正タスクは調査結果の詳細を明記せずに停止し、準備された変更内容は「プライベートな修正」として保持されます。プライベートな修正。
プライベートな修正
プライベートな修正が適用された調査結果は、以下の「プライベートな修正」に表示されますプライベートな修正。オーナーと管理者のみがこれを閲覧できます。
- 修正内容をダウンロードでは準備された変更内容が「ファイルとして保存され、自分でレビューまたは適用できます。
.patchファイルとして保存され、自分でレビューまたは適用できます。 - 公開ではその調査結果が現在開示されたことが記録され、準備された変更内容をそのまま適用し、pull requestを開くタスクが作成されます。「公開」をクリックするのは、修正内容と問題が公開される準備が整った時、例えば調整済みのリリース日が来た時などです。Coroidから公開できないほど大きな修正内容も、手動でダウンロードして適用することは可能です。
- 破棄では準備された変更内容が削除されます。
公開と破棄の操作は組織の監査ログに記録され、どちらの場合もCoroidから準備された変更内容が削除されます。
誰も公開または破棄しないプライベートな修正は、限定された期間のみ保持されます。180日経過するとオーナーと管理者に通知され、365日経過すると削除され、その旨が通知されます。
計画済み
- プロジェクトごとのセキュリティ連絡先、オーナーや管理者とともにプライベートな修正をレビューし公開できるユーザーです。
- GitHubのプライベートフォーク:GitHubリポジトリのセキュリティアドバイザリー内のプライベートフォークで修正を準備し、リグレッションテストを実施する方法。Coroid内に保持するのではありません。
- メンテナーへのレポート:依存ライブラリのコードに脆弱性が存在する場合、そのメンテナー向けに非公開の報告書を作成し、これを送信するのは人間のみです。