GitHubは、コードスキャンの解析基盤であるCodeQLの新版2.26.0を公開しました。Kotlin 2.4.0への対応に加え、信頼できないユーザー入力がAIモデルのシステムプロンプトへ流れ込む経路を検出する新クエリなどを追加しています。
CodeQL 2.26.0の3行まとめ
今回の発表の要点を、先に3点へ整理しておきましょう。
- GitHubがコード解析エンジンCodeQL 2.26.0を公開
- Kotlin 2.4.0対応とAIプロンプトインジェクション検出クエリを追加
- github.comのコードスキャンには自動配備、GHESは今後のリリースで提供
本記事は公表時点の情報にもとづきます。仕様や提供状況、料金は変わる可能性があります。
導入や利用の判断は各自の責任で公式情報の最新の内容をご確認ください。設定変更やアップデートを行う場合は、必ず事前にバックアップを取得し、検証環境で確認したうえで実施してください。
CodeQL 2.26.0の主な変更点
CodeQL(コードを静的に解析してセキュリティ上の問題を見つける解析エンジン)の2.26.0では、対応言語・フレームワークの解析範囲の拡大と新しいクエリの追加が中心です。分野ごとに変更点を見ていきましょう。
Kotlin 2.4.0のサポートを追加
CodeQLはKotlinのバージョン2.4.0までを解析できるようになりました。Kotlin 2.4.0で書かれたコードも、CodeQLの解析対象に含められます。
今回拡大されたKotlinの解析範囲は、次のとおりです。
- 対象言語: Kotlin
- 解析可能なバージョン: 2.4.0まで
AIプロンプトインジェクションを検出する新クエリ
新クエリjs/system-prompt-injectionは、JavaScript・TypeScriptのコードで、信頼できないユーザー入力からシステムプロンプトやエージェントのツール説明へ至るデータフローを追跡します。入力がこの経路へ入ると、攻撃者による指示の回避、機密情報の漏えい、意図しない操作につながる可能性があります。
CodeQLが示すのは、危険な入力経路がコード上に存在することです。アラートが出ても実行時の攻撃がすでに成功したという意味ではないため、入力源から到達点までの経路と、実際に組み立てるメッセージの役割を確認します。
対処では、ユーザー入力をシステム/開発者メッセージやツール説明へ含めず、ユーザー役割のメッセージとして分離します。組み込む必要がある場合は、固定した許可リストで値を検証するという公式Query Helpの修正指針を確認してください。
このセクションの用語
- プロンプトインジェクション
- 信頼できない入力をAIへの指示として解釈させ、安全上の制約を回避したり意図しない操作を実行させたりする攻撃。
- システムプロンプト
- AIモデルの役割や振る舞いを規定する上位の指示。通常のユーザーメッセージより優先して扱われる。
- 静的解析
- プログラムを実行せずにコードの構造やデータの流れを調べ、不具合や脆弱性につながる経路を検出する手法。
AI SDK向けのprompt-injection sinkモデルを追加
JavaScript・TypeScript向けに、CodeQLがprompt-injection sink(信頼できない入力が到達すると危険になる、データフロー上の到達点)として扱うようになった主なAPIとフィールドは、次の表のとおりです。
| SDK | API | 対象 |
|---|---|---|
| OpenAI Sora | videos.create/edit/extend/remix |
prompt |
| OpenAI Realtime | beta.realtime.sessions.create |
instructions |
| Anthropic旧API | completions.create |
prompt |
| Google GenAI | caches.create |
cached contents/system instructions |
| OpenAI旧API | completions.create |
user-prompt sinkへ再分類 |
これらはAI SDK向けの解析モデル変更であり、すべてが新しいjs/system-prompt-injection専用のsinkという意味ではありません。具体的なAPIとフィールドは、CodeQL 2.26.0公式変更履歴のAI SDK項目で確認できます。
C#とGoの解析モデルを拡充
C#とGoで追加された主な解析対象を、次の表にまとめます。
| 対象 | 主な追加 |
|---|---|
| C#(Razor Pages) | ハンドラーメソッドの引数を汚染入力源に追加、SQLインジェクション検出を強化 |
| Go(log/slog) |
log/slog向けモデルを追加、対応クエリを拡大 |
C#では、Razor PagesのハンドラーメソッドOnGet・OnPost・OnPostAsyncなどが受け取るパラメータが、新たな汚染入力源に加わりました。cs/sql-injectionは、PageModel派生クラス内でこれらのパラメータが関わる脆弱性を検出できます。
Goでは、Go 1.21で導入されたlog/slogパッケージ向けのモデルが追加されました。go/log-injectionとgo/clear-text-loggingは、パッケージ関数に加えslog.Loggerのメソッドも検出対象です。
JavaScript/TypeScriptに実験的なSSRFクエリを追加
JavaScript/TypeScript向けの実験的なjavascript/ssrf-ipv6-transition-incomplete-guardは、プライベートIPv4アドレスを拒否していても、IPv6遷移形式では回避できる不完全なSSRFガードを検出します。文字列の見た目だけで外部アドレスと判定すると、内部IPv4アドレスを埋め込んだ表現を通す可能性があります。
対象となる代表例は、IPv4-mapped IPv6の::ffff:169.254.169.254、NAT64の64:ff9b::a9fe:a9fe、6to4の2002::/16です。検証後にOSが埋め込まれたIPv4宛先へルーティングするため、クラウドのメタデータサービスや内部ネットワークへ到達し得ます。
対処では、遷移形式を解釈できるパーサーでホストを正規化し、埋め込まれたIPv4アドレスを取り出してプライベート範囲を再判定します。DNS解決後のアドレスも検証するという公式クエリ解説の修正指針まで確認してください。
このセクションの用語
- SSRF
- 外部から与えた宛先へサーバー自身に通信させ、内部ネットワークやクラウドの管理用情報へアクセスする攻撃。
- IPv4-mapped IPv6
- IPv4アドレスをIPv6形式の中へ埋め込んで表す方式。先頭に
::ffff:を付けた表現が代表例。 - NAT64
- IPv6ネットワークからIPv4の宛先へ通信するために、IPv6アドレスとIPv4アドレスを変換する仕組み。
- 6to4
- IPv4ネットワークを経由してIPv6通信を行う遷移技術。IPv4アドレスを
2002::/16配下へ埋め込む。
GoとPythonのクエリで誤検知を削減
誤検知(本来は問題でない箇所を警告する誤り)が減ったGoとPythonのクエリは、次のとおりです。
-
go/unhandled-writable-file-close: 誤検知を削減 -
py/modification-of-locals: 誤検知を削減
Goのgo/unhandled-writable-file-closeは、全実行経路で同じファイルハンドルへのSync呼び出しと結果処理がCloseより前に行われる場合、遅延実行のCloseへの警告を止めました。
Pythonのpy/modification-of-localsは、locals()の辞書が作成元スコープ外へ渡された後の変更を警告しなくなりました。詳しい判定条件は、CodeQL 2.26.0公式変更履歴のPython項目で確認できます。
SwiftとGitHub Actionsの解析精度を改善
SwiftとGitHub Actionsに入った主な改善は、次のとおりです。
- Swift: CryptoKitのモデル改善
- Swift: 弱いパスワードハッシュ検出を改善
- GitHub Actions: ランナーラベル対応を更新
- GitHub Actions: 名称・説明・警告文を修正
swift/weak-sensitive-data-hashingとswift/weak-password-hashingは、CryptoKitのモデル改善により、更新後に追加の検出結果(アラート)が出る可能性があります。
actions/pr-on-self-hosted-runnerは、最新の標準ランナーラベルを認識するよう更新され、誤検知が減りました。actions/untrusted-checkout/mediumは名称・説明・アラートメッセージを修正し、非特権コンテキストに適用されることを明確にしています。
対象ユーザーと利用シーン
今回の更新が関係する主な対象ユーザーは、次のとおりです。
- Kotlinアプリを開発するチーム
- 生成AIを組み込むJS・TSの開発者
- C#・Go・Python・Swiftを検査するチーム
- GitHub Actionsを検査する管理担当者
github.comのコードスキャンには、新しいバージョンのCodeQLが自動で配備されます(実際に実行されるクエリは、有効な言語やquery suiteなどの設定によって変わります)。GitHub Enterprise Server(GHES、自社環境で動かすGitHub)の利用者は、今後のリリースでの提供を待つか、古いGHESでは手動でCodeQLを更新するかのいずれかです。
CodeQL 2.26.0の概要
CodeQL 2.26.0の提供先と主な変更を、次の表に整理します。
| 項目 | 詳細 |
|---|---|
| 提供元 | GitHub |
| 発表日 | 2026年7月10日 |
| バージョン | CodeQL 2.26.0 |
| コードスキャンでの提供先 | github.com/GitHub Enterprise Server |
| 主な変更 | Kotlin 2.4.0対応/AIプロンプトインジェクション検出クエリの追加 |
| 提供形態 | github.comは自動配備/GHESは今後のリリースで提供 |
trends編集部の一言
生成AIをアプリへ組み込む動きが広がるなか、プロンプトインジェクションは新しい攻撃面として注目を集めています。CodeQLがこの経路を静的解析で検出できるようになった意味は、決して小さくありません。
実務では、AI SDKを呼び出すコードでユーザー入力がシステムプロンプトへ直接または加工・中継処理を経て渡っていないかを、まず点検する価値があります。今回追加された主なsinkの例は、自社コードを点検する際の代表的な確認観点として使えます。
今回の更新は一様ではなく、Kotlinは対応バージョンの更新、C#・Go・AI SDK関連は解析範囲の拡大、Swiftは追加の検出結果が出る可能性がある変更、Go・Python・GitHub Actionsの一部クエリは誤検知の削減です。github.comのコードスキャンには新バージョンが自動配備されますが、実行対象のクエリは設定に依存するため、GHES利用者は自社の更新計画とあわせて今回の変更を確認するとよいでしょう。
References
- GitHub. 「CodeQL 2.26.0 adds Kotlin 2.4.0 support and AI prompt injection detection」. https://github.blog/changelog/2026-07-10-codeql-2-26-0-adds-kotlin-2-4-0-support-and-ai-prompt-injection-detection, (参照 26-07-12).
- GitHub. 「CodeQL CLI 2.26.0」. https://codeql.github.com/docs/codeql-overview/codeql-changelog/codeql-cli-2.26.0/, (参照 26-07-12).
- GitHub. 「System prompt injection」. https://codeql.github.com/codeql-query-help/javascript/js-system-prompt-injection/, (参照 26-07-12).
- GitHub. 「Incomplete guard against SSRF via IPv6 transition addresses」. https://github.com/github/codeql/blob/main/javascript/ql/src/experimental/Security/CWE-918/SsrfIpv6TransitionIncompleteGuard.qhelp, (参照 26-07-12).
※本記事は公式発表を基に編集しています。内容はAIで確認していますが、誤りや最新情報との差異がある場合は、以下フォームよりご報告ください。
修正・削除・掲載などの依頼はこちらITやプログラミングに関するコラム
HTMLで"が文字化けする原因と解決方法を解説
1on1の目的と効果、実施方法を詳しく解説
【Python】2次元配列の要素の取り出し方(リスト・NumPy)
【Python】2次元配列に行と列をappendで追加する方法を解説
【Python】2次元配列の初期化方法をサンプルコードと併せて解説
【Python】2次元配列の宣言、要素操作、ループ処理の方法について解説
【Python】2次元配列の列を簡単に抽出する方法
【Python】2次元配列を空で宣言し値を追加する基本的な方法
【Python】2重ループや多重ループをbreakで抜ける方法
【Python】3Dモデルを描画できるライブラリ3選
ITやプログラミングに関するニュース
Apache Camelに深刻度Criticalを含む17件の脆弱性が公表、修正版への更新で対応が必要に
Hugoに5件の脆弱性が公表、修正版0.163.3への更新でまとめて対応可能に
Python Pillowに5件の脆弱性が公表、修正版12.3.0への更新で対応可能に
radare2に4件の脆弱性が公表、修正版6.1.8への更新でまとめて対応可能に
vLLMに4件の脆弱性が公表、修正版0.24.0への更新で対応が可能に
Crawl4AIに3件の脆弱性が公表、修正版0.9.0への更新でまとめて対応が可能に
Apache IoTDBに3件の脆弱性が公表、修正版2.0.8への更新で対応が必要に
pnpmにパストラバーサル脆弱性3件が公表、修正版への更新で対応が必要に
traefikに3件の脆弱性が公表、修正版への更新で対応が必要に
GitHub Copilotがリポジトリ概要機能を一般提供、初めて開くリポジトリの目的や使用技術を即把握
