GitHub CodeQLが宣言的なサニタイザーとバリデーターを取得、QLコード不要
なぜ重要か
GitHubはCodeQL 2.25.2でYAMLを通じたサニタイザーとバリデーターの宣言的定義を有効にし、QLコードを書く必要がなくなりました。8つの言語(C/C++、C#、Go、Java/Kotlin、JS/TS、Python、Ruby、Rust)をサポートし、QL専門家なしでチームが静的セキュリティ分析を行えるようになります。
GitHub CodeQLが宣言的なサニタイザーとバリデーターを取得、QLコード不要
GitHubはCodeQL 2.25.2バージョンでmodels-as-dataアプローチを拡張し、QL言語でクエリを書く必要なくYAMLを通じてサニタイザーとバリデーターを定義できる新機能を追加しました。
サニタイザーとバリデーターとは
サニタイザーは入力データから潜在的に危険なコンテンツを除去する関数です。例えば表示前にHTMLタグを削除します。バリデーターはブール値の結果を返し、データが安全にさらに処理できるかどうかを示す関数です。CodeQLの用語では、サニタイザーはバリア(感染したデータフローの中断)としてモデル化され、バリデーターはバリアガード(条件付き中断)としてモデル化されます。これまでチームはCodeQLが内部セキュリティ関数を認識するために独自のQLクエリを書かなければなりませんでした。新しい拡張可能なプリジケートbarrierModelとbarrierGuardModelは、YAMLモデルパックを通じて入力するだけで十分です。
サポートされる言語と実際の影響
この機能は8つのプログラミング言語をカバーします:C/C++、C#、Go、Java/Kotlin、JavaScript/TypeScript、Python、Ruby、Rustです。各言語について、チームはQLの深い知識なしに独自の入力、出力、条件を定義できます。GitHubはこの変化をセキュリティ静的分析の民主化と表現しています。SQLクエリのエスケープ、HTMLのサニタイズ、JWTトークンの検証のための独自ヘルパー関数を持つ組織は、モデルパックリポジトリへのプルリクエストを通じてこれらのパターンを標準CodeQLスキャナーに追加できるようになります。
誰が試すべきか
これは内部セキュリティライブラリを持つ大規模なモノレポで作業するセキュリティチームや、ユーティリティ関数をカバーしたいオープンソースのメンテナーに最も役立つと予想されます。この機能は2026年4月のCodeQL 2.25.2で利用できます。すでにGitHub Advanced Securityを使用している小規模チームにとって、QL専門家を雇用することなくカバレッジを拡大する低リスクな方法です。典型的な使用例は、SQLクエリの前にユーザー入力をエスケープする独自関数を書いた組織です。これらの拡張機能がなければ、CodeQLはデータが実際には安全であるにもかかわらず、SQLインジェクションの誤ったポジティブ警告を報告し続けます。モデルパックにYAMLエントリを追加することで、これらの誤ったポジティブが排除され、分析はプルリクエスト全体で一貫したままになります。YAML拡張のドキュメントと例は公式CodeQLリポジトリで利用でき、GitHubは四半期ごとのアップデートを通じてさらなる拡張を予告しています。
この記事はAIにより一次情報源から生成されました。