1年前、GitHubは、Semmle QLクエリ言語を備えたセマンティックコード分析エンジンのメーカーであるSemmleの買収を発表した。数か月のベータ版を経て、GitHubは現在、すべてのパブリックリポジトリとプライベートリポジトリで新しいCodeQLベースのコードスキャン機能が利用可能になったことを発表している。
コードスキャンを使用して、コード内の既存の問題に対する修正を検索、選別、優先順位付けをすることができます。コードスキャンは、開発者が新しい問題を引き起こすのを防ぎます。特定の日時にスキャンをスケジュールしたり、プッシュなどの特定のイベントがリポジトリで発生したときにスキャンをトリガーしたりできます。
業界データによると、GitHubによると、セキュリティ問題の30%未満が発見から1か月以内に修正されている。GitHubコードスキャンは、開発サイクルのできるだけ早い段階で脆弱性を特定し、本番環境に到達しないようにすることを目的としている。これには、リモートコード実行(RCE)、SQLインジェクション、クロスサイトスクリプティング(XSS)の脆弱性などのセキュリティの問題が含まれる。
CodeQLは、2,000を超える数のすぐに使用可能なクエリを提供し、カスタムクエリを定義して、新しいセキュリティ上の懸念を検出する能力を拡張できる。CodeQLでサポートされている一連のクエリは、それ自体がオープンソースであり、ベータ期間中にコミュニティから132件のコントリビューションを受けている。CodeQLは、C/C++、C#、Go、Java、JavaScript/TypeScript、Pythonなど、コンパイル型言語とインタープリター型言語の両方をサポートしている。
コードスキャンはGitHub Actionsと統合されており、ソフトウェアの欠陥や脆弱性を検出するための相互運用性標準であるオープンSARIF標準をサポートしている。SARIFは、相互にインテグレーションできるようにすることを目的としたコード分析ツールのための共通の入出力形式を定義する。たとえば、SARIFを使用すると、複数のツールで生成された結果を組み合わせて比較できる。
GitHubによると、昨年5月にベータ版として導入されて以来、GitHubコードスキャンはコミュニティで広く採用されており、12,000を超えるリポジトリがスキャンされ、20,000を超えるセキュリティ問題が特定されている。
開発者と運用担当者は、過去30日間にマージする前に、プルリクエストで特定されたセキュリティエラーの72%を修正しました。
GitHubの発表により、Hacker Newsでは、コード分析ツールによって生成される誤検知により、その後に起こり得る開発者の疲労について興味深い会話が生まれた。ただし、GitHubコードスキャンでは、全てのルールセットを設定可能であるため、この問題を軽減できると言われている。