◀ 用語一覧
NO.19.3

GHAS

GitHub Advanced Security

更新: 2026.10.26

一言で

GitHub Advanced Security (GHAS) は GitHub のセキュリティ製品スイート。開発者がうっかり混入させてしまう 2 つのもの、クレデンシャル と 脆弱なコード をリポジトリからスキャンして検出する。

製品は Secret Protection と Code Security の 2 つで、それぞれ単体で購入できる。

なぜ今なのか

INFOFIRST(Forum of Incident Response and Security Teams)とは?

世界中のサイバーセキュリティ専門チームが集まる、国際的なネットワーク組織。

1990 年に設立。世界 110 カ国以上、850 を超える企業、政府機関、大学などのセキュリティチームが加盟している。

主な活動

  1. サイバー攻撃の情報共有:世界中で起きているサイバー攻撃やシステムの欠陥(脆弱性)の情報を共有し、被害の拡大を防ぐ。
  2. 世界共通の「危険度のモノサシ」を作る
    • CVSS ↗(共通脆弱性評価システム):バグが「どれくらい危険か」を点数で表す世界標準の基準。
    • EPSS ↗(脆弱性悪用予測システム):そのバグが「実際に攻撃者に悪用される確率」を AI やデータで予測する仕組み。

2026 年 6 月の発表(超要約)

  • AI のおかげでバグの発見数は過去最多ペース。ただし、実際に危険な攻撃が増えたわけではない。
  • すべてのバグを片っ端から直すのではなく、EPSS などの指標を使って「本当に危険なバグ」から優先して直すことが大切。

一言で:世界中で協力して、インターネットを安全に使うための情報共有やルール作りをしている組織。

CVE が史上最多

FIRST ↗ は 2026 年の 1 年間に新たに公開される CVE ↗ を約 66,000 件と予測。史上初めて 7 万件に迫るペースで、AI による脆弱性発見が大きな要因。

GHSA 前年比 +449%

GitHub はキュレーション体制を拡大し AI 支援も導入。無料公開の Advisory Database ↗ が Dependabot アラートの元になる(左)。

AI 対 AI のレース

AI による exploit 生成と、AI によるパッチ生成の競争。悪用までの時間はすでに 24 時間(右)。

Dependabot アラートが 4 倍超に

GitHub 全体の新規アラート数(四半期)。

52M

Q1 25

70M

Q2 25

77M

Q3 25

82M

Q4 25

357M

Q1 26

313M

Q2 26

2025 年の 7,000〜8,000 万から急増。CVE アラートも 2026 年 2 月以降、全体で 6 倍。

脆弱性から悪用までの時間

CVE 公開から初の実悪用までの平均日数。

1y 1mo 7d 1d 2.3y 1.7y 1.3y 10mo 8.6mo 4.2mo 53d 21.5d 24h 2018 2019 2020 2021 2022 2023 2024 2025 2026

悪用が確認された 3,500 件超の CVE に基づく(CISA KEV + VulnCheck KEV)· zerodayclock.com

FIRST の 4 つの提言 📖 Docs

従来のセキュリティが追いつかない。 AI が生成する新規コードの量は従来のレビュープロセスが検査できる範囲を超え、しかも一度に多数の新しい面から流れ込む。エージェントが変更を複数リポジトリへ波及させた後では、PR でのゲートはすでに手遅れ。

🔧 パッチ作業の倍増に備える

ソフトウェアを保守する側の作業は倍増する。一方、稼働中システムへのパッチ量は 2026 年末まで比較的安定。

💰 セキュリティに予算を割く

CVE の増加とソフトウェア資産の拡大を考えると、セキュリティ専用の予算確保は不可欠。

🎯 深刻度と悪用可能性で絞り込む

FIRST は CVSS ↗ を自社環境に合わせて調整し、深刻度を評価することも推奨。悪用可能性の指標も併用する。Dependabot アラートには EPSS スコア ↗(実際に悪用される可能性)が表示される。

🤖 防御側の AI を今すぐ使う

悪用はかつてなく速い。攻撃者も同じ最新モデルを使えて、コストは障害にならない。防御側がトリアージするより速くリスクを見つけて武器化し、サプライチェーン攻撃も人間のレビューサイクルより速く動く。

日本の情報漏えい事例(2026-10-22 時点) 📖 Docs

日付は企業の公表日(参照した続報や訂正を含む)。

トヨタ T-Connect(2022-10-07)漏えいの可能性:296,019件一次情報

公表内容DB のアクセスキーを含むコードが GitHub 上で公開。2017年12月から2022年9月まで露出。第三者のデータアクセスは未確認。

GitHub の対策Secret Protection ↗:コードと履歴のキーを検出。Push protection ↗:対応する secret の push をブロック。検出範囲は形式と設定に依存。

マネーフォワード(2026-05-01)コード内のキーとパスワード一次情報

公表内容漏えいした GitHub 認証情報でリポジトリをコピーされた。コード内の認証キーとパスワードを無効化し、再発行。

GitHub の対策Secret Protection ↗:侵害前にコード内の認証情報を検出して rotate。Push protection で対応 secret の追加を防ぐ。初期侵入ではなく侵害後のアクセス拡大を抑える。

Gyazo(2026-10-21)対象範囲:約2,362万アカウント一次情報

公表内容動画変換処理のコマンドインジェクション。実際の送信件数は不明。

GitHub の対策Code Security / CodeQL ↗:対応コードで、この種の入力処理の弱点を検出。

KDDI ISP メール(2026-07-21)漏えい:12,231,954人一次情報

公表内容メールアドレスが漏えい。第三者製ソフトの脆弱性は検知時点でベンダー未把握。

GitHub の対策Dependabot ↗:対応依存関係の既知の脆弱性が対象。未知の脆弱性を防ぐものではない。

日本企業で相次ぐデータ漏洩

2026年、サイバー脅威が急拡大。 警察庁の観測では、上半期の不審アクセスは前年同期比 51% 増。ランサムウェア被害報告は 123 件で半期最多(警察庁 ↗)。

公表日(続報や訂正を含む)の古い順。2026-10-22 時点。

GHAS はどう応えるか

スキャンツールは通常プラットフォームの外側にある。別のコンソール、別のバックログ、そしてコードを書いた数日後に届く検出結果。GHAS はこの 4 ステップすべてを、コードがすでに置かれている場所で実行する。

▸ ステップをクリックで詳細

FIND

🔎 FIND — すでに存在するものを洗い出す

git 履歴全体と全ブランチを走査して漏れた認証情報を検出し、コードをクエリ可能なデータベース化して脆弱なデータフローを追跡する。

組織内のすべてのリポジトリが対象。各チームに何かをインストールさせたり設定させたりする必要はない。

PREVENT

🚧 PREVENT — 入り込む前に止める

Push protection が secret を含む push 自体を拒否する。リモートに到達しないので、ローテーション作業も発生しない。

ルールセットで「code scanning がクリーンになるまで PR をマージさせない」ことができる。レビュアーの記憶ではなくリポジトリのルールがゲートになる。

FIX

🔧 FIX — プルリクエストの中で直す

アラートは差分へのアノテーションとして届く。開発者が別ツールを開きに行く必要のあるチケットではない。

Copilot Autofix が説明付きの修正パッチを提案するので、脆弱性の種類を調べるところから始めるのではなく、変更をレビューするところから始められる。

PROVE

📊 PROVE — エンタープライズ全体で示す

1 つのセキュリティ構成がすべての組織とリポジトリに適用される。明日作られるリポジトリも含む。

Security overview がカバー済み・未カバーのリポジトリとバックログの推移を可視化する。カバレッジが「たぶん大丈夫」ではなく数値になる。

ステップを選択 ▸

何が入っている? 📖 Docs

Secret scanning とはコードに置き忘れた鍵を探す基礎知識

脆弱性ではなく、コードや git 履歴に書いてしまった API キー、トークン、パスワードを探す。攻撃者にとって一番安上がりな侵入口なので、SAST より優先度が高いことも多い。行を消しても履歴には残るため、漏れた secret は無効化とローテーションが必須。

Secret scanningPUBLIC は無料

git 履歴全体と新規 push を 200 以上のプロバイダーパターンで走査。Validity check で漏れたトークンの生死を判定。

Push protectionPUBLIC は無料

secret を含む push 自体を拒否する。リモートに到達しないのでローテーションも不要。

AI-detected secretsライセンスのみ

正規表現で表現できない非構造の認証情報を検出。設定ファイル内のパスワードや文章中の secret など。

Custom patternsライセンスのみ

自社独自のトークン形式。社内サービス、レガシー認証情報、パートナーが登録しない命名規則。

Delegated bypassライセンスのみ

push protection のバイパスを、指定レビュアーグループへの承認申請に変える。

Public monitoringライセンスのみ

Enterprise 向け、Public preview。自社所有でない repo も含め、GitHub 全体の Public repo に漏れた secret を検出する。Enterprise のメンバーシップまたは検証済みドメインで自社との関連を判定。Secret Protection または GHAS が必要。Docs ↗

SAST とは自分が書いたコードを、実行せずに読む基礎知識

Static Application Security Testing。ソースコードを実行せずに解析するので、ビルドもデプロイも不要で PR の時点で回せる(shift-left)。修正コストが一番安いタイミング。反面、実行時にしか分からない設定ミスや認証フローの穴は見えない。そこは動いているアプリを外から叩く DAST の領分(GitHub 純正機能はなし、結果は SARIF で取り込める)。

Code scanning (CodeQL)PUBLIC は無料

コードをクエリ可能な DB にコンパイルし、危険なシンクへのデータフローを追跡。インジェクション、パストラバーサルなど。

Copilot AutofixPUBLIC は無料

アラートを PR 上の説明付き修正差分に変える。修正率が実際に動くのはここ。

AI-powered detectionsライセンスのみ

CodeQL のクエリが無い言語やフレームワークをカバーする AI エンジン。PR レビュー時に動く。

Third-party SARIFPUBLIC は無料

SARIF を出力するスキャナーなら同じアラート一覧に取り込める。バックログもダッシュボードも 1 つ。

Security campaignsライセンスのみ

バックログを、担当者と期限が付いた終わらせられるリストに切り出し、コードを持つチームと直接進める。

SCA とは他人が書いたコード(依存関係)を洗う基礎知識

Software Composition Analysis。マニフェストや lock ファイルから、自分が書いていないライブラリ側の既知の脆弱性(CVE)を洗い出す。現代のアプリはコードの大半が依存パッケージなので、件数ベースでは一番のヒット源になりやすい。SAST は自分のコード、SCA は他人のコード。守備範囲が違うので、どちらか一方では埋まらない。

Dependency reviewPUBLIC は無料

PR が追加 / 削除 / 更新する依存関係を表示。Dependency Review Action を必須チェックに設定すると、既知の脆弱性や許可されていないライセンスのマージをブロックできる。

License complianceライセンスのみ

2026-10-16 に GA。Enterprise 共通のライセンスポリシーをブランチルールセットでマージ前に適用し、例外は Enterprise Open-Source License Manager が承認する。Public repo も含め Enterprise Cloud + Code Security が必要。データ所在地にも対応。License compliance のスライド ↗ / Docs ↗

カスタム auto-triage ルールPUBLIC は無料

Dependabot アラートを自社ルールで一括自動クローズ・再オープン。実リスクだけがバックログに残る。

Security overviewライセンスのみ

サプライチェーンのリスクとカバレッジを、全リポジトリ横断で組織全体に集約。

その他のサプライチェーン機能全プランで無料

Dependency graph、Dependabot alerts、security / version updates、マルウェアアラート、プリセット auto-triage ルール、SBOM エクスポートは 全プランで無料。

料金 📖 Docs

製品価格課金単位
🔑 GitHub Secret Protection$19 / 月active committer
🔍 GitHub Code Security$30 / 月active committer
📦 両方セット$49 / 月active committer
  • 👥 active committer = 過去 90 日間に、機能が ON のリポジトリへ push した人。何リポジトリ・何 org でも 1 人分。GitHub App の bot は対象外
  • 🏷️ GitHub Team と GitHub Enterprise で購入可能。Enterprise Server と GHE.com では全リポジトリにライセンスが必要
  • 🌐 public repo は「ほとんど」無料だが「全部」ではない — custom patterns、delegated bypass、AI-detected secrets、campaigns、Security overview はライセンスが必要 (正確な線引き ↗)

購入前の棚卸し — Risk Assessments 📖 Docs

Org → Security → Assessments から実行できる無料の棚卸しが 2 つある。ライセンスもトライアルも不要で、購入を判断する前に実際の数字を見られる。

🔑 Secret Risk Assessment

組織のリポジトリに眠っている secret の種類と件数を、カテゴリ別に集計する。

対象
すべての repo — public / private / internal / archived
頻度
1 回限り
出力
件数のみ。secret の値は保存されない

🔍 Code Security Risk Assessment

CodeQL が検出したコードの脆弱性を、深刻度・言語・Copilot Autofix で修正可能な件数に分けて表示する。

対象
最もアクティブな最大 20 repo
頻度
90 日に 1 回
出力
集計レポート。Actions 実行枠は消費しない
  • 🛂 実行できるのは Organization owner と security manager のみ
  • 🏷️ GitHub Team と GitHub Enterprise Cloud (Server は 3.22 で対応予定)
  • 🧪 結果画面からそのまま GHAS トライアル ↗ を開始できる。数字が出た後の次の一手はこれ

エンタープライズ全体へのロールアウト手順

Enterprise → Settings → Advanced Security → Code security で configuration を 1 つ作れば配下の全 org / repo に配れる。New configuration は最初から GitHub recommended。

Enterprise の security configuration を強制適用し、新規 / 既存リポジトリを問わず org / repo 管理者によるポリシーの上書きを防げるようになった。9 月 15 日の発表 ↗

使わせない org は先に止める配る前にやるDocs

やることEnterprise → Policies → Advanced Security → Policies タブ → dropdown を Allow for selected organizations にして許可する org だけ残す

なぜ先に禁止しても既に有効な repo は無効化されない。止められるのは追加のリポジトリだけなので、配った後では手遅れ

効く相手repository administrator だけ。org owner と security manager はポリシーに関係なく有効化できる

Push protection が ON になる止まるのは push だけDocs

止まるgit push・GitHub UI 上のコミット・ファイルアップロード・REST API 経由のリクエスト

止まらないgit pull・git clone・git fetch。「secret に引っかかって pull できなくなる」は誤解

bypass は write 権限者に開放デフォルト設定Docs

デフォルトwrite 権限を持つ全員が理由を選んで bypass 可能。ただしアラート + 監査ログ + owner へのメールが必ず残る

絞るにはconfiguration の Bypass privileges を Specific actors に(= delegated bypass)。指定外の人は申請 → 承認フロー(申請は 7 日で失効)

Code scanning が 3 タイミングで走るActions 分を消費Docs

いつ走るdefault / protected branch への push のたび・同ブランチ宛て PR の作成とコミットのたび(fork からの PR は除く)・週 1 回のスケジュール

コスト全社展開でいちばん効いてくる要因。CodeQL 対応言語を含まない repo はスキャンも Actions 分も 0

注意code scanning 自体は merge をブロックしない

merge を止めたいなら rulesetEnterprise → Policies → RulesetsDocs

設定場所Policies → Repository → Rulesets → Require code scanning results

ブロック条件指定 severity のアラート検出・解析が実行中・ツールがそのリポジトリで未設定

落とし穴CodeQL 未設定の repo に当てるとアラート 0 件でも全 PR がブロック

Evaluate とはブロックせず記録だけ取るお試しモード。Rule Insights ページで「Active だったら何が弾かれたか」を確認できる。残りは Active(即適用)と Disabled(無効)

新規リポジトリに配るPolicy で設定Docs

やることPolicy → Use as default for newly created repositories を設定。Code scanning は Enabled with advanced setup allowed を選ぶと既存の CodeQL workflow を壊さない

効く範囲新規リポジトリのみ。既存リポジトリには一切効かない

既存リポジトリに配るApply to で別途実行Docs

やることConfigurations 一覧 → Apply to → All repositories without configurations

enterprise 限定この選択肢は enterprise レベルでのみ表示。既に config が当たっている org を壊さず、未設定の repo だけカバーできる

強制適用Policy → Enforce configuration で Enforce for repository and organization owners を選ぶと、適用した既存 repo でも org / repo 管理者による上書きを防げる(全 repo に強制するなら Apply to → All repositories)

対象archived リポジトリにも適用される(secret scanning は archived でも動くため)

リポジトリを選んで配るorg / enterprise config に対応Docs

repo 単位org のリポジトリ一覧から、enterprise で作成した configuration も選択した repo に適用できる。選択する画面が org レベルなだけで、config の作成元は org に限定されない

やり方Organization → Settings → Advanced Security → Configurations → Repositories タブで repo を絞り込んで選択 → Apply configuration → org または enterprise の config を選ぶ → Apply

どちらが優先enterprise 側の変更が org configuration と衝突すると repo は removed_by_enterprise になり org config が外れる。enterprise が優先

どの configuration が適用されるか1 repo = 1 config(後勝ち)Docs

基本ルールマージや重ね掛けはなく、1 リポジトリに紐づく configuration は常に 1 つだけ。別の config を当てると Detach 不要で後から適用した方が上書きする(Detach の仕様 ↗)。なお Detach だけでは有効化済みの機能は OFF にならない

優先と競合既存 repo に enterprise で All repositories を当てると org の設定を上書きする(All repositories without configurations なら維持)。新規 repo のデフォルトは enterprise-enforced な enterprise デフォルトが org デフォルトに優先(Enforcement の仕様 ↗)。競合時は removed_by_enterprise になる(ステータス一覧 ↗)

Org で確認Organization → Settings → Advanced Security → Configurations → Repositories タブで、各 repo の適用中 configuration 名とステータス(Enforced, Removed, No configuration)を確認し、Configuration status で絞り込める(診断手順 ↗)

API で確認1 repo の適用 config は GET /repos/{owner}/{repo}/code-security-configuration(REST API ↗)、ある config の対象 repo 一覧は GET /orgs/{org}/code-security/configurations/{configuration_id}/repositories(enterprise 版も同様、REST API ↗)

カバレッジの可視化 📖 Docs

DEMOSecurity overview発表者専用
  1. ENTERPRISE レベル

    octodemo → Security overview ↗ を開き、検知 / 修復 / 予防のトレンドを見せる。続けて Coverage と Risk ビューに切り替える。

    自分が owner / security manager の org だけが集計される。

  2. ORGANIZATION レベル

    theomonfort-org → Security overview ↗ で同じダッシュボードを org 単位で見せる。

    現場が日常的に見るのはこのビュー。

  3. REPOSITORY レベル

    ghas-test-1 → Security and quality ↗ で 1 リポジトリのアラートまで降りる。

    Enterprise → Org → Repo と、同じアラートを段階的に絞り込む流れ。

配り終わったら次の関心事は「実際どこまで守れているか」。Security and quality タブが Enterprise / Organization の両レベルで答えてくれる。

ビューわかることレベル
📊 Overview検知 / 修復 / 予防のトレンド推移Ent + Org
📈 Coverageどの repo でどの機能が有効かEnt + Org
🛡️ Riskアラートが多いのはどの repo かEnt + Org
🌐 Public monitoringメンバーが GitHub 上の public repo に漏らした secretEnt のみ
  • 🏢 Org レベルの Coverage が現場の日常ビュー。enterprise 側は自分が owner / security manager になっている org しか集計されない
  • 🌐 Public monitoring (public preview・Secret Protection 必須) は enterprise メンバーと verified domain で漏洩を紐付ける。Enterprise → Settings → Advanced Security → Code security で ON
  • 📤 Export CSV は Overview / Coverage / Risk で使え、適用中のフィルタがそのまま反映される
スライド Eng