GitHub、CodeQL 2.27.3を解説:Python 3.15構文とJSONデータ拡張に対応、Actions制御フローグラフの共有化でカスタムクエリが壊れる可能性、リリースは10月20日付
2026年11月3日、GitHubはCodeQL 2.27.3を解説しました。Python 3.15の構文(matchリテラルの単項プラス、Unicode 17識別子)とfrozendict・sentinel組み込み、JSONで書けるデータ拡張、組み込みソースのない任意の「ai」脅威モデル、C23のビット精度整数、複数の誤検出削減が含まれます。完全なリリースノートには二つの破壊的変更があります。macOS 27と任意のXcode、またはmacOS 26とXcode 27ではコンパイル型言語のautobuildとmanual buildが非対応です。GitHub Actionsの制御フローグラフも共有CFGライブラリに移り、関連するカスタムクエリは更新が必要になる場合があります。旧Completionクラスは削除されました。リリースノートは2.27.3を10月20日付とし、同じページに11月2日付の2.27.4もあります。誤検出率の実測値はありません。
2026年11月3日、GitHubはGitHubコードスキャンの背後にある静的解析エンジンCodeQLのバージョン2.27.3に関する変更履歴の記事を公開しました。記事によれば、このバージョンは新しいPython 3.15の言語機能に対応し、データ拡張にJSON構文を追加し、C23のビット精度整数を追加し、複数の言語で精度を改善しています。日付には注意が必要です。CodeQLのリリースノートは2.27.3のリリース日を2026年10月20日としており、同じページにはすでに11月2日付の2.27.4も載っています。つまり11月3日の記事が扱うのは約2週間前のバージョンで、より新しいパッチ版が存在します。
CLIでは、データ拡張ファイルをYAMLと同じ構造のJSONで書けるようになり、Java風のコメントも使えます。拡張子が.jsonのファイルはJSONとして、それ以外はこれまでどおりYAMLとして解析されます。他のツールから拡張ファイルを生成するチームには、機械で作成、検証しやすいJSONが役立ちます。また、LLMが生成したデータ向けに、任意で有効にする「ai」脅威モデルが追加されました。組み込みのソースモデルはないため、何かを検出させたいチームは、データ拡張で自分のソースを定義する必要があります。
Pythonでは、エクストラクターがPython 3.15の構文に対応し、matchのリテラルパターンでの単項プラスやUnicode 17の識別子を含みます。CodeQLはfrozendictとsentinelの新しい組み込みにも対応し、frozendictの構築についてデータフローをモデル化しています。リリースノート全体には記事より多くの項目があり、たとえばunicodedataの新しい書記素イテレーターやbinasciiの新しいエンコード関数に対するテイントフローがあります。新しい構文に対応するというのは、コードを解析できるという意味であり、すべてのクエリが新しい書き方に合わせて調整されたという意味ではありません。
ほかの言語の変更は小さめです。CとC++ではC23の_BitInt(N)型への対応と、BlazingMQのメッセージクラスの一部のフロー要約が加わりました。C#ではis式とswitchの位置パターンを通るデータフローに対応し、プライベートレジストリの設定時にプロキシと証明書の環境変数をNuGetコマンドラインツールに渡します。RubyではGrape::APIのリクエスト副アクセサー(params、cookies、body.read、envなど)をリモートのフローソースとして扱います。これらの追加は結果を変え得ます。新しいリモートソースによって、以前は問題がなかったコードに新しい警告が出ることがあります。
誤検出を減らすためにいくつかのクエリが調整されました。C++のcpp/resource-not-released-in-destructorは、ローカルのエイリアス経由で解放されるリソースを認識します。C#のcs/simplifiable-boolean-expressionは、型情報が不完全なときの誤検出が減ります。JavaとKotlinのSSRFおよび未検証リダイレクトのクエリは、URIホストと固定の許可リストの大文字小文字を区別しない比較を、ホストがローカル変数に入っている場合も含めて認識します。Pythonではpy/xxe、py/xml-bomb、py/nosql-injectionが、信頼できないソースの選択で設定済みの脅威モデルに従うようになり、既定は引き続きリモートソースで、データ拡張でモデル化したソースも含みます。最後の変更は、すでにローカルソースをモデル化しているチームで警告が増える可能性があります。
完全なリリースノートにはCLIの破壊的変更もあり、macOS 27と任意のXcode、またはmacOS 26とXcode 27では、コンパイル型言語のautobuildとmanual buildがサポートされません。別の破壊的変更がGitHub Actionsの解析にあります。ActionsのコントロールフローグラフはCFG共有ライブラリを使うようになり、特定のCFGノード、エッジ、基本ブロックの境界に依存するカスタムクエリは更新が必要になることがあります。従来のCompletionクラスは削除され、DirectSuccessor、BooleanSuccessor、ReturnSuccessorなどのエッジラベルを使うよう案内されています。GitHubは、新しいCodeQLのバージョンはgithub.comのコードスキャンに自動で展開され、この機能はGitHub Enterprise Server 3.24のリリースにも含まれ、古いGHESの利用者はCodeQLを手動でアップグレードできると述べています。記事に実測の誤検出率はないため、チームはブランチで再スキャンして警告を比べ、純粋な改善と見なす前に確認すべきです。
Sources
FAQ
CodeQL 2.27.3で既存のクエリが壊れうる変更はどれですか?
GitHub Actions解析の制御フローグラフが共有CFGライブラリを使うようになりました。特定のCFGノード、エッジ、基本ブロック境界に依存するカスタムクエリは更新が必要になることがあり、旧Completionクラスは削除されたため、DirectSuccessorなどのエッジラベルを使います。
Python 3.15対応は、全クエリが新しい書き方に調整済みという意味ですか?
違います。記事が述べるのは、エクストラクターが新しい構文を解析でき、frozendictやsentinelなどの組み込みをモデル化するので、コードを解析できるということです。各クエリが新しい書き方に調整されたとは書かれておらず、誤検出率や検出率もないため、アップグレード後はブランチで警告を比較してください。
このバージョンが実際にリリースされたのはいつですか?
GitHubの記事は2026年11月3日付で「最近リリースした」とあります。一方、CodeQLのリリースノートは2.27.3を2026年10月20日付とし、同じページに11月2日付の2.27.4も載っています。したがって約2週間前のバージョンで、より新しいパッチ版があります。