見逃した人向けに: CodeQLの機能強化
Published at February 16, 2023
Category: Security,code scanning,CodeQL,SAST
Author: Walker Chabbott
Summary
GitHubは、Rubyコードベースのスキャンやモバイルアプリケーションのスキャン機能など、CodeQLに多くの機能強化を行い、開発者がワークフローを中断することなくコードを保護できるよう支援しています。
昨年、GitHubはコードスキャンを支えるセマンティック解析エンジンであるCodeQLに多くの機能拡張を行いました。新しい言語のスキャン、新しいタイプのCWEの検出、アプリケーションのより深い分析、そしてユーザーエクスペリエンスの向上が可能になりました。CodeQLの主な強化点を確認し、お客様の環境でどのように活用できるかを学びましょう。
新しいエコシステムのテスト
Rubyのコードベースのスキャンを試したことはありますか?私たちは、GitHub Universe 2022でCodeQLのRubyサポートの一般提供を発表しました。デフォルトクエリの数を2倍にし、Ruby関連のOWASPカテゴリすべてをすぐにカバーできるようにし、パフォーマンスを最適化して90%のベータユーザーが5分以内にテストを提供できるようにするなど、ベータ版から多くの改良を加えています。現在までに、Ruby コードベースをスキャンしたユーザは 4,000 件以上の警告を修正し、平均して 1 日に約 5,000 件の Ruby 分析が実行されています。
Ruby は、進化するニーズに合わせて柔軟なアプリケーションを構築できるため、長年にわたって当社の SDLC に不可欠な要素となっています。Rubyのコードベースをスキャンし、脆弱性の特定と修正をすべてGitHub上で行うことができるため、当社の開発者はワークフローを中断することなくコードの安全性を確保することができます。
CodeQLのKotlinサポートのベータ版で、モバイルアプリケーションのテストも可能ですCodeQL は現在、Kotlin および Java と Kotlin の混合プロジェクトにネイティブで対応しています。Kotlinのサポートは、私たちの既存のJavaサポートの延長であり、モバイルとサーバーサイドの両方のアプリケーションのために、Java用の既存のCodeQLクエリのすべての利点を利用することができます。
Kotlinは、モバイルアプリケーションセキュリティへの最初の投資であり、Swiftのベータサポートは今年後半に登場する予定です。
新しい言語に対するテストだけを利用できるわけではありません。現在の言語サポートにも、以下のような改良を加えています。
- Java 19のフルサポート
- Go 1.19のフルサポート
- C#11のビルドサポート
- Python 3.11のフルサポート
これにより、毎日使用する言語の多くをスキャンし、アプリケーションを安全に出荷できるようになりました。
コードのより詳細な分析
コードスキャンでは、CodeQLクエリを使用してセキュリティ脆弱性を検出します。クエリーの使用は複雑に聞こえるかもしれませんが、GitHubの研究者やコミュニティのセキュリティ研究者によって書かれ、キュレーションされた、最も重要な脆弱性から一般的な脆弱性までをカバーする、すぐに使えるクエリーを提供することで簡単に行えるようにしました。また、開発者が特定のバグや過去に問題を起こした可能性のある脆弱性をチェックするために、カスタムクエリを作成することも可能です。
CodeQLの分析機能を簡単に利用できるように、新しいクエリを多数追加しました。CodeQLは現在、昨年より27%増の318のデフォルトセキュリティクエリを同梱しており、オプションの拡張クエリパックで最大432まで有効にすることができます。
Depandabotアラートと合わせて、これらのクエリは、該当するOWASPの全カテゴリ、SANS CWE Top 25の100%、WASCの該当カテゴリの100%をカバーしています。これは、セキュリティチームがCodeQLが最も重要な脆弱性を検出していると確信できるだけでなく、開発者がプルリクエストの中ですぐに確認できることを意味します。

CWEベースのカバレッジの全リストは、CodeQLのCWEカバレッジページをご覧ください。また、サポートされている言語とフレームワークのページでは、ライブラリやフレームワークのすべてのアップデートと、各言語のクエリの変更履歴へのリンクを確認することができます。
CodeQLのシームレスな使用
最後に、CodeQL の使用感について、いくつかの改善を行いました。コードスキャンにCodeQLパックのサポートを追加し、GitHub.comとGitHub EnterpriseでCodeQLパックを活用できるようになりました。また、クエリフィルタを使用してCodeQL分析をカスタマイズする機能を開始しました。これにより、コードベースに関連しない可能性のある特定のチェックを柔軟にフィルタリングし、どのセキュリティチェックが最も関連性が高いかについて、より正確な結果を確認することができます。CodeQLは、クラス最高の精度と低い偽陽性率を損なうことなく、分析の実行速度を16%向上させました。
セキュリティ研究者のために、私たちは最も人気のあるオープンソースプロジェクトのCodeQLデータベースを作成し、保存しています。これらのデータベースは、VS Code の CodeQL 拡張機能を通じて簡単に入手でき、セキュリティ調査を行いながら CodeQL カスタムクエリの作成と実行を効率化することができます。
また、GitHubコミュニティもCodeQLの成功の重要な要因となっており、ユーザーはリソースや知識を共有し、プラットフォームの開発に貢献しています。例えば、今年、コードベースのセキュリティリスクを分析するための新しいクエリを追加する際に、GitHub コミュニティが役に立ちました。
これらの新機能や統合により、開発者は最初から安全なコードを構築することが容易になり、セキュリティ研究者は問題になる前に脆弱性を発見することができるようになりました。
CodeQLを始める
CodeQLとコードスキャンをリポジトリで始めたい場合は、新しいデフォルトのセットアップオプションで簡単に有効にすることができます。いつものように、CodeQLはオープンソースリポジトリで無料で使用することができます。プライベートリポジトリでCodeQLを活用したい場合は、GitHub EnterpriseサブスクリプションにGitHub Advanced Securityを追加することが可能です。詳しくは営業にお問い合わせください。
私たちは常に製品を改善する方法を探していますので、このリポジトリにコメントを書き込んで、あなたやコミュニティのためにCodeQLを改善する手助けをしてください。
Source
ICYMI: CodeQL enhancements
Over the last year, GitHub has brought a number of enhancements to CodeQL , the semantic analysis engine that powers code scanning. You can now scan new languages, detect new types of CWEs, perform deeper analyses of your applications, and enjoy improvements to the user experience. Let’s check out …