Instiq
第4章 · Code Security(CodeQL)·v1.0.0·更新 2026/7/17·読了目安 約15分

変更要約: 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)や到達可能性も加味して優先順位を付ける。

データフロー→重大度/カテゴリ→autofix→修正&再スキャンの図。
autofix も検証してから

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 について正しいものは?

理解度を確認第4章「Code Security(CodeQL)」の問題を解く

学習の記録を残しませんか

参考書はすべて無料で読めます。無料登録すると、問題集での演習・既読と進捗の記録・間違えた問題の復習・ハイライトが使えます。