◀ 用語一覧
NO.19.4

Code Scanning

更新: 2026.07.22

一言で

Code Scanning は、リポジトリのソースコードを 静的解析(SAST)して脆弱性を見つける GitHub の機能。

解析エンジンは GitHub 製の CodeQL(セマンティック解析)で、見つかった脆弱性は Copilot Autofix が AI で修正コード付きの提案まで生成してくれる。Default setup なら 1 クリックで開始。

Default setup と Advanced setup の違い

CodeQL の有効化方法は 2 つ。まず Default で十分

観点🟢 Default setup🛠️ Advanced setup
設定UI で 1 クリック、設定ファイル不要.github/workflows/codeql.yml を書く
言語検出GitHub が自動検出YAML で明示
クエリdefault セット(GitHub 推奨)default / security-extended / security-and-quality / カスタム
トリガーpush / PR / weekly schedule(自動)自分で設定
ビルド多くの言語で build 不要(autobuild)自分でビルドコマンド指定可
対象クリックで全リポに展開可細かいチューニングが必要なケース

🔑 monorepo・特殊なビルド・カスタムクエリが要らない限り Default setup がベストプラクティス。あとから Advanced に切り替え可能。

📘 詳細: Configuring default setup ↗

CodeQL が見つけてくれる脆弱性

CodeQL は コードを「クエリ可能なデータ」に変換 してから解析するので、grep ベースの SAST より意味を理解した検出ができる。

  • 🐛 インジェクション系 — SQL injection / Command injection / Path traversal / XSS / SSRF
  • 🔓 認証・認可 — 認可漏れ(broken access control)、弱い暗号アルゴリズム (MD5/SHA1)、安全でない乱数生成
  • 💣 メモリ系(C/C++) — buffer overflow / use after free / null deref
  • 🧩 データフロー追跡 — ユーザー入力(taint source)が危険な関数(sink)に届くかを追跡
  • 🌐 対応言語 — C/C++、C#、Go、Java/Kotlin、JavaScript/TypeScript、Python、Ruby、Swift

🔬 CodeQL のクエリは github/codeql で OSS 公開されている。自社で独自クエリを書いて拡張可能。

Copilot Autofix で AI が直す ★

Code Scanning 最大のキラー機能。CodeQL のアラートに対して AI が修正コードを生成 し、PR にそのままコミットできる。

  • 🤖 どう動く — アラートを LLM(GPT-4 系)に渡し、該当コード + 周辺コンテキスト + CodeQL の説明を元に diff を生成
  • 💬 どこに表示 — アラート画面 および PR にインライン表示。コミット先は 既存ブランチ または 新規ブランチ から選択
  • MTTR 短縮 — GitHub の社内データで修正時間が 3〜4 倍速に
  • 🌐 対応言語 — JavaScript/TypeScript、Python、Java/Kotlin、C# ほか CodeQL がサポートする言語
  • 🆓 OSS は無料 — public repo の Copilot Autofix は 2024 から完全無料(Copilot 契約も不要)

💡 「脆弱性を見つける」だけでなく「直すところまで AI に任せる」が新しい標準。レビューの負担が大幅に下がる。

📘 詳細: About Copilot Autofix ↗

Copilot へのアサイン — 修正をエージェントに依頼(Public Preview)

何ができる — Code Scanning のアラートを Copilot Coding Agent に直接アサインすると、Copilot が脆弱性を解析 → 修正計画を立案 → ドラフト PR を自動作成 してくれる。

  • 🎯 2 つのアサイン方法一括:Security Campaign で複数アラートを選択 → 「Assign Copilot」で 1 つの PR にまとめて修正 / 個別:アラート詳細ページの assignee picker から Copilot を選択
  • 🤖 Copilot がやること — 脆弱性を解析 → 修正計画を立案 → ドラフト PR を作成。PR 上で @copilot にコメントすれば反復修正も可
  • 📦 出力 — リポジトリ全体を踏まえた 複数ファイルの変更(Autofix のインライン単一ファイル修正とは異なる)
  • 🛂 利用条件 — GitHub Code Security または GHAS + Copilot Coding Agent(GHEC)。事前に Copilot Autofix で修正提案が生成済みであること(Autofix 対応クエリのみ)
  • 📅 ステータス — Public Preview(2025-10-28)

📘 詳細: Assign code scanning alerts to Copilot(changelog)↗

Autofix と Copilot へのアサインの違い

項目🔧 Autofix(修正提案)🤖 Copilot へのアサイン
出力インライン修正パッチ — 既存ブランチ または 新規ブランチ に直接コミット可Copilot ボットが作成するドラフト Pull Request
修正範囲単一ファイル・最小限の局所修正複数ファイル対応。リポジトリ全体を踏まえた変更が可能
対応単位個別のみ(アラートごとに「Generate fix」を 1 件ずつ実行)個別 + 一括対応可。Security Campaign で複数アラートを選択し、1 つの PR にまとめて修正依頼可能
検証提案時点では検証なし(マージ後の再スキャンで確認)サンドボックスでコード解析。PR 上で CodeQL / CI が自動実行され結果を事前確認可能
反復・修正一発提案、再生成不可。気に入らなければ破棄PR 上で @copilot にコメントすることで反復的に再修正・追加対応が可能
所要時間数秒(同期処理)数分(バックグラウンド非同期処理)
ライセンス・コスト無償。GHAS / GitHub Code Security があれば追加ライセンス不要Copilot Coding Agent ライセンスが必要。プレミアムリクエストを消費
前提条件アラートの CodeQL クエリが Autofix 対応である必要あり(未対応クエリでは「Generate fix」が表示されない)Autofix の修正提案が既に生成済みであることが必要

🔑 使い分けの目安 — まず Autofix で素早く局所修正。複数ファイルや大きめのリファクタが必要なら Copilot へのアサイン にエスカレーション。

Security Campaigns — 組織横断で計画的に修正

何か期限付き・組織横断の修正キャンペーン。対象アラートを絞り込み、オーナー・期限を設定し、ダッシュボードで進捗追跡。

  • 🎯 ユースケース — 「プロダクト X の SQLi critical を Q2 末までに修正」/ security-extended バックログ一掃 / インシデント後の CVE 横断対応
  • 🧭 絞り込み — severity / CWE / クエリ / 言語 / repo / team / 経過日数(プレビュー付き)
  • 👥 オーナー — CODEOWNERS / 指定チームに自動ルーティング、team 別に進捗確認
  • 期限・ダッシュボード — due date 設定 + open / fixed / overdue を可視化
  • 🤖 Copilot へのアサインと組合せ — Autofix 対応アラートを一括選択 → repo ごとに 1 PR を自動生成
  • 🛂 権限security manager / org owner が Org レベルで作成

作り方

  • Org → Security and quality → Campaigns → New campaignFrom template / From code scanning filters / From secret scanning filters から選択

📘 詳細: About security campaigns(GitHub Docs)↗

始め方(最短ルート)

Step 1 — Default setup を ON(これだけで OK)

Repo → Settings → Code security → Code scanning
  → Set up CodeQL → Default

GitHub が言語を自動検出して CodeQL workflow を裏で生成。Push と PR で自動実行され、結果は Security タブ + PR の Files changed タブにインラインコメントで表示される。

Step 2 — Copilot Autofix を ON

Code scanning settings 内の Copilot Autofix を有効化。アラート画面に「Generate fix」が出るようになる。

Step 3 — Advanced setup へ移行(必要なら)

# .github/workflows/codeql.yml
name: CodeQL
on:
  push: { branches: [main] }
  pull_request: { branches: [main] }
  schedule: [{ cron: '30 5 * * 1' }]
jobs:
  analyze:
    runs-on: ubuntu-latest
    permissions: { security-events: write, contents: read }
    strategy:
      matrix: { language: [javascript, python] }
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3
        with:
          languages: ${{ matrix.language }}
          queries: security-extended
      - uses: github/codeql-action/analyze@v3

Step 4 — サードパーティ SAST も統合(SARIF)

Semgrep、ESLint security、Snyk などは SARIF 形式で結果をアップロードすれば Security タブに同居できる。

- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: results.sarif

Step 5 — Org / Enterprise で一括 ON

Org → Settings → Code security → default settings で新規 / 既存リポに一括適用。Security campaign で「全リポの critical を 30 日以内に修正」のようなキャンペーン管理もできる(Code Security)。

利用条件と料金

機能Public repoPrivate repo(Non GHAS / Code Security)Private repo(With GHAS / Code Security)
CodeQL(default + advanced)✅ 無料
Third-party SARIF upload✅ 無料
Copilot Autofix✅ 無料(2024〜)
Security overview / campaigns✅ 無料
PR インラインコメント✅ 無料
Custom CodeQL クエリ✅ 無料

💰 2025 年に GHAS が分割され、code scanning だけなら GitHub Code Security($30/月/active committer)で OK(GHAS フル契約は不要)。Secret scanning も欲しければ Secret Protection と組み合わせる。
🆓 Public repo は CodeQL も Autofix も完全無料。OSS なら今すぐ ON にしない理由がない。
⚙️ Code scanning の workflow は GitHub-hosted runner で実行され、public repo は無料、private repo は GHAS/Code Security 契約に含まれる(別途 Actions 課金は不要)。

📘 詳細:

Code Security Risk Assessment(無料の棚卸しスキャン)

何ができる — Org 内で 最もアクティブな最大 20 リポジトリ を 1 クリックで CodeQL スキャンし、どこにどんなコード脆弱性が眠っているかを可視化する機能。GHAS / Code Security ライセンス不要・完全無料(2026 年 4 月 GA)。

  • 🔎 対象 — 最近のコミットが活発な repo を最大 20 件までセレクト(毎回選び直し可)
  • 📊 出力重大度 (severity) ・ 言語 ・ ルール種別 ごとに集計したレポート、Copilot Autofix で修正可能な件数 も表示
  • 🕒 頻度90 日に 1 回 再実行できる(point-in-time の棚卸し)
  • 🛂 権限 — Organization owner / security manager のみ実行可能
  • 🚀 動かし方Org → Security → Assessments → Run code security risk assessment
  • 🆓 コスト — ライセンス不要、Actions 分も消費しない — Code Security 購入前の判断材料に最適

📊 Secret Risk Assessment(Secret Scanning ↗ 参照)とセットで「うちの組織のセキュリティ姿勢」を 1 日で可視化できる。結果を見て Code Security 導入の是非 を判断するのが定石。

📘 詳細: