本文へスキップ

CodeQL 2.27.1、C++クエリを追加しActionsのロックファイルに対応

CodeQL 2.27.1は170のCWEを対象とする498のデフォルトセキュリティクエリ、新しいC/C++チェック、Kotlin 2.4.20対応、そしてActionsのロックファイル(lock file)の認識を備えています。

著者 Tech AI Wire Team

3 分で読めます

CodeQL 2.27.1の変更履歴ページ。actions.lockに関するactions/unpinned-tagの変更と、新しいC/C++およびC#のクエリが並んでいる。
写真: GitHub

数字で見る

security queries in the default suite
498
CWEs those default queries cover
170
extra queries in the extended suite
131

GitHubは2026年9月25日にCodeQL 2.27.1を発表しました。新しいCおよびC++のクエリを追加し、Kotlin 2.4.20をサポートし、GitHub Actionsのワークフローの判定方法を変えています。日々の作業で最も影響が大きいのはActionsの変更です。CodeQLは今後、有効なロックファイルのエントリが対象としているアクションを、安全にピン留めされたものとみなします。この方法でピン留めしているチームでは、誤検知が減るはずです。

CodeQLは、GitHubのコードスキャンを支える静的解析エンジンです。静的解析とは、ソースコードを実行せずに読み、バグやセキュリティ上の欠陥を探すことです。コードスキャンはこうしたチェックをプルリクエストで実行し、結果をアラートとして表示します。

CodeQL 2.27.1の新機能

CodeQL CLIの変更履歴では、このリリースは2026年9月22日付です。GitHubの変更履歴の投稿はその3日後に出ました。どちらも同じ変更内容を説明しています。

領域2.27.1での変更
C/C++新しいクエリcpp/ambiguous-assignment-of-comparison
C#新しいクエリcs/linq/missed-firstordefault
C# Webcs/web/missing-token-validationがAutoValidateAntiforgeryTokenAttributeを認識
GitHub Actionsactions/unpinned-tagが有効な.github/workflows/actions.lockのエントリと$/参照を受け入れる
KotlinKotlin 2.4.20をサポート。K2コンパイラでのFoo::class.javaの抽出を修正
GoGo 1.27のbytes.CutLast、strings.Clone、JSONエンコーディングパッケージのデータフローモデル
Rustエクストラクタをrust-analyzer 0.0.347に移行
JavaScriptFastifyのサーバールートの認識を改善

ドキュメントにはクエリパックの規模も記載されています。デフォルトスイートには170のCWEを対象とする498のセキュリティクエリが含まれます。CWEとは、バグの種類をまとめた公開カタログであるCommon Weakness Enumerationの項目です。拡張スイートは、さらに32のCWEを対象とする131のクエリを追加します。

新しいCおよびC++のクエリ

C/C++の追加は、目立たない種類のバグを狙っています。比較の結果を変数に代入し、その変数を真偽値として使うコードを検出します。GitHubによると、こうした式はあいまいになる可能性があります。

典型的な例は、=と==が混在する行です。読み手には、作者が比較結果を保存したかったのか、値を判定したかったのか、いつも見分けられるわけではありません。コンパイラは通常どちらの解釈も受け入れるため、専用のチェックが役立ちます。

C#側にもコード品質のクエリが加わりました。cs/linq/missed-firstordefaultは、LINQのFirstOrDefaultメソッドで書けるforeachループを指摘します。LINQは、コレクションに対するC#組み込みのクエリ構文です。変更履歴によると、その書き換え提案はin、out、refパラメーターを取り込まなくなりました。

Actionsのロックファイルの変更が重要な理由

アクションをピン留めするとは、v4のようなタグではなく、正確なコミットで参照することです。タグは、採用した後で別のコードに移される可能性があります。コミットはそうはなりません。CodeQLのactions/unpinned-tagクエリは、ワークフローがタグを使っていると警告します。

2.27.1では、このクエリは.github/workflows/actions.lockの構造的に有効なエントリで裏付けられた参照を受け入れるようになりました。また、リポジトリ自身を指す$/参照を、本質的にピン留めされたものとして扱います。自分のリポジトリ内のコードは、外部のタグのように第三者に差し替えられることがありません。

セルフホストの利用者に届く時期

GitHub Enterprise Serverは、企業が自社のマシンで運用するGitHubです。GitHubによると、Enterprise Server 3.24にCodeQL 2.27.1が含まれます。Java側のツールも更新されました。ドキュメントには、Eclipse Temurin OpenJDK 25.0.4.1への更新が記載されています。

開発者にとっての意味

アップグレード後は、actions/unpinned-tagに関するコードスキャンのアラートを確認してください。すでにアクションを.github/workflows/actions.lockに記録しているなら、それらの参照に対するアラートは閉じるはずです。開いたまま残るものは、ロックファイルが対象としていない参照か、クエリが有効とみなさないエントリを指しています。いずれにしても、確認する価値があります。

CやC++のチームは、古いコードでcpp/ambiguous-assignment-of-comparisonの検出結果が最初にまとめて出ることを想定してください。一括で却下せず、1件ずつ仕分けてください。意図的なスタイルのものもあります。何年もレビューをすり抜けてきた本物のタイプミスかもしれないものもあります。

K2コンパイラを使うKotlinのチームには、2つの修正が同時に届きます。2.4.20のサポートにより、解析を失わずにコンパイラをアップグレードできます。Foo::class.javaの修正で、一部の誤検知もなくなるはずです。

Go 1.27を使うGoのチームは、標準ライブラリの新しい関数に対するデータフローモデルを得られます。テイントトラッキングは、信頼できない入力がプログラム内を通って危険な箇所に達するまでを追跡します。今後はbytes.CutLastやstrings.Cloneでも、追跡を見失わずにデータを追えます。

GitHub Enterprise Serverを運用しているなら、これらの変更を得るために3.24へのアップグレードを計画してください。それまでは、コードスキャンは従来のクエリの動作のままです。

出典

  1. CodeQL 2.27.1 adds C and C++ query and Kotlin 2.4.20 support - GitHub Changelog
  2. CodeQL 2.27.1 (2026-09-22) - CodeQL documentation

関連記事

Kubernetes 1.37のノードで、kubeletとkube-proxyのプロセスが非rootユーザーの所有として表示されているターミナル画面。
開発ツール

Kubernetes 1.37、rootlessモードがベータに昇格

Kubernetes 1.37でKubeletInUserNamespaceがベータになりました。kubelet、コンテナランタイム、CNIプラグイン、kube-proxyのすべてを非rootユーザーで動かせます。

薄暗いデータセンターの通路で、手袋をはめた手がラックマウントサーバーの電源ボタンを押している。オレンジ色のステータスランプが1つだけ点灯している。
テック業界

Kiteworks、今週末のサーバー停止を顧客に要請

Kiteworksは、法執行機関から攻撃が差し迫っているとの警告を受け、9月26日(土)に6時間サーバーを停止するよう全顧客に要請しました。ゼロデイ(未知の脆弱性)攻撃への備えです。

Node.js 22.23.3のリリースノートにあるNotable Changesの一覧。OpenSSL 3.5.8への更新と2つのNode-APIの変更が含まれている。
開発ツール

Node.js 22.23.3 LTS、HTTP/2のuse-after-freeバグを修正

9月23日公開のNode.js 22.23.3 LTSは、HTTP/2のuse-after-free(ユースアフターフリー)バグを修正し、Node-APIにSharedArrayBufferのサポートを追加し、OpenSSL 3.5.8に移行しました。