LV.1
EXP 0/1000
◀ 用語一覧
NO.19.4

🔍 Code Scanning

一言で

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
  • 🔓 認証・認可 — ハードコードされた認証情報、弱い暗号アルゴリズム、weak random
  • 💣 メモリ系(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 で表示 — 「Generate fix」ボタン → 提案された patch を確認 → そのままコミット
  • MTTR 短縮 — GitHub の社内データで修正時間が 3〜4 倍速に
  • 🌐 対応 — JavaScript/TypeScript、Python、Java/Kotlin、C# ほか CodeQL がサポートする言語
  • 🆓 OSS は無料 — public repo の Copilot Autofix は 2024 から完全無料(Copilot 契約も不要)

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

📘 詳細: About Copilot Autofix ↗

始め方(最短ルート)

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(無料の棚卸しスキャン)

Code Security Risk Assessment は、Org の中で 最もアクティブな最大 20 リポジトリ を 1 クリックで CodeQL スキャンし、「どこにどんなコード脆弱性が眠っているか」を可視化する機能(2026 年 4 月 GA)。

GHAS / Code Security 不要・完全無料。Team・Enterprise Cloud の全 Org が使え、ここで使う Actions 分も Actions の無料枠を消費しない。

  • 🔎 対象 — Org の中で 最近のコミットが活発な 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 導入の是非 を判断するのが定石。

📘 詳細: