変更要約: GH-500 第4章を新規作成(アプローチと設定=CodeQL[純正・データフロー SAST]・サードパーティと SARIF 取り込み・Actions デフォルト/外部 CI 有効化・ワークフローテンプレート・matrix ビルド・スキャン頻度、分析と最適化=データフロー source→sink レビュー・重大度/カテゴリ(CWE)・アラートライフサイクルと autofix[要検証]・高度な構成/クエリスイート・スキャン失敗(ビルド/言語/リソース)と性能トラブルシュート)
4.2結果の分析・トリアージ・最適化
スキャン結果(データフロー解析の洞察を含む)のレビュー、アラートのライフサイクルと自動修正(autofix)・修復ワークフロー、却下と重大度/カテゴリの分類、そして高度な構成・カスタマイズとスキャン失敗/性能のトラブルシュートを理解します。
スキャンで出たアラートは、トリアージ(分類・優先順位付け) して修復します。Code Scanning のアラートは、データフロー解析 により「どこ(source)から入った危険な値が、どこ(sink)で悪用され得るか」を経路として示すため、原因と影響範囲を理解しやすいのが特徴です。
4.2.1結果のレビューとデータフロー
アラートを開くと、データフローのパス(ユーザー入力などの source → 危険な操作の sink)が表示されます。これにより「なぜ脆弱なのか」「どこで遮断すれば直るか」が分かり、入力の 検証/サニタイズ をどこに入れるべきか判断できます。各アラートには 重大度(severity) と カテゴリ(rule/CWE) が付き、優先順位付けに使います。
4.2.2アラートのライフサイクルと autofix
Code Scanning アラートも オープン → 修正で解決 → (誤検知/許容なら理由付き却下) のライフサイクルを持ちます。自動修正(autofix / Copilot Autofix) は、検出した脆弱性に対する 修正案を自動提示 し、開発者はレビューして採用できます——ただし自動修正も 検証してからマージ します(鵜呑みにしない)。コードが直りデフォルトブランチで再スキャンされると、アラートは 自動的に解決 されます。同じ脆弱性が 再び現れれば再オープン されます。
4.2.3高度な構成とトラブルシュート
高度な構成では、CodeQL クエリスイート の選択(既定の security-extended 等)や、対象パス/言語の調整、誤検知の抑制を行います(詳細は第5章の組織カスタマイズ)。スキャンの失敗 は、ビルド失敗(コンパイル型言語で自動ビルドが通らない)、言語/設定の不一致、リソース不足(大規模リポでのタイムアウト/メモリ)などが典型原因です。性能の最適化 では、対象の絞り込み、スキャン頻度の調整、適切なランナーサイズ、キャッシュなどを用います。
頻出:
①Code Scanning アラートはデータフロー(source→sink)で原因と影響を示す=どこで検証/サニタイズすべきか分かる。
②各アラートに重大度とカテゴリ(rule/CWE)=優先順位付け。
③autofix(Copilot Autofix)は修正案を提示するが検証してからマージ。修正&再スキャンで自動解決、再発で再オープン。
④スキャン失敗=ビルド失敗/言語・設定不一致/リソース不足を疑う。
混同・注意:
①autofix の提案も誤り得る——必ず検証してからマージ(責任ある利用)。
②アラートの dismiss は誤検知/許容のときに理由付きで——安易な却下は脆弱性の放置。
③コンパイル型言語で「結果が出ない」のはビルド失敗が原因のことが多い——ビルド設定を確認。
④重大度だけでなくカテゴリ(CWE)や到達可能性も加味して優先順位を付ける。
4.2.4この節のまとめ
- Code Scanning アラートはデータフロー(source→sink)で原因/影響を示す=検証/サニタイズ位置が分かる
- 各アラートに重大度とカテゴリ(rule/CWE)=優先順位付け
- autofix は修正案を提示するが検証してからマージ。修正&再スキャンで自動解決、再発で再オープン
- スキャン失敗はビルド失敗/言語・設定不一致/リソース不足を疑う、性能は対象絞り込み/頻度/ランナーで最適化
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. Code Scanning のアラートが「危険な値がどこから入りどこで悪用され得るか」を経路で示す解析はどれですか?
Q2. Copilot Autofix が提示したコード修正案の正しい扱いは?
Q3. コンパイル型言語のリポジトリで Code Scanning の結果がまったく出ません。まず疑う原因は?
Q4. Code Scanning アラートのライフサイクルとして正しいものは?
Q5. アラートの優先順位付けで参照する分類情報として適切な組み合わせは?
Q6. Code Scanning アラートの dismiss について正しいものは?

