GitHubは、脆弱性の静的コード分析を開始しました





徹底的なテストの後、GitHubは脆弱性スキャン機能を公開しました誰でも自分のリポジトリでスキャナーを実行し、本番環境に移行する前に脆弱性を見つけることができます。スキャナーは、C、C ++、C#、JavaScript、TypeScript、Python、およびGoのリポジトリーで機能します。



スキャナーは、昨年GitHubによって買収されたSemmleによって開発されたCodeQLテクノロジーに基づいています。CodeQLは、世界初の脆弱性スキャナーと見なされています。ベータテストは2020年5月にGitHubで開始されました。この機能は誰でも利用できるようになりました。



オンにする方法



スキャンは、リポジトリの[セキュリティ]タブから開始されます。







そこで、[コードスキャンの設定]をクリックします







次のウィンドウで、スキャンに使用するワークフローを選択する必要があります。実際、CodeQLはサードパーティエンジンの接続をサポートしています。標準エンジンの場合は、「CodeQL分析」を選択します。







原則として、このワークフローは構成できます。スケジュールされたスキャンの有効化、各push要求またはプル要求のスキャン、独自の構成ファイルの使用、スキャン中に追加の検索クエリの起動



次に、[コミット開始]ボタンクリックして、新しいコミットの名前を入力します。







マスターブランチにコミットするか、新しいブランチを作成してプルリクエストを起動するかを選択します。







それがすべてです。最後に、[新しいファイルをコミット]または[新しいファイルを提案]ボタンをクリックします



コミットを指定した後、VulnerabilityScannerはワークフローで指定された頻度に従ってコードを分析します



CodeQLをアクティブ化した後、結果を表示し、スキャンパラメータ変更できます



CodeQLエンジン







CodeQLエンジンは、2000を超えるクエリの辞書を使用して潜在的な脆弱性を検索します。辞書は、GitHubとシステムをテストしたユーザーのコミュニティによって編集されています。このデータベースは常に更新され、構成ファイルを編集するだけで、誰でも個別にデータベースに追加できます。



スキャンツールは、SARIF(OASIS静的分析結果交換フォーマット)静的コード分析標準に基づいて構築されており、単一のインターフェイスで動作するサードパーティエンジンの接続をサポートします。統合APIを介した結果のエクスポートもサポートされています。



2020年5月の提出以来、12,000を超えるリポジトリがスキャンされ(合計140万パス)、リモートコード実行(RCE)の脆弱性、SQLインジェクション、クロスサイトスクリプト(XSS)など、20,000を超えるセキュリティの問題が特定されました。



開発者とメンテナは、コードをメインブランチにマージする前に、発見されてから30日以内に見つかった脆弱性の72%を修正しました。統計によると、検出されてから1か月以内に修正された脆弱性は30%未満であるため、これは良い結果です。



ベータテストの結果、コミュニティからの132のコミットがオープンソースクエリ辞書に対して行われました。 GitHubユーザーがサードパーティのツールを実行できるように、セキュリティシステムの開発者と、静的分析、コンテナスキャン、およびコードとしてのインフラストラクチャの検証(Infrastructure-as-Code; IaC)のためのオープンソースツールとの契約が締結されています。これは、構成を通じてインフラストラクチャを管理および記述するためのアプローチです。ファイルであり、サーバー上の構成の手動編集や対話型の対話によるものではありません。



GitHubは、脆弱性の検索に加えて、24のサードパーティサービスプロバイダーと提携して、アクセスキーなど、平文で公開できないコード内の秘密を見つけます。パートナーには、AWS、Google Cloud、Azure、Dropbox、Slack、Discord、npm、Stripe、Twilioが含まれます。シークレットのスキャンは、パブリックリポジトリとプライベートリポジトリの両方で自動的に行われます。







コードスキャンは、パブリックリポジトリでは無料で、GitHub Enterprise(有料サービスのAdvancedSecurityパッケージに含まれています。一部のエキゾチックなオプション(許可されたIPアドレスのリスト、SAML、LDAPサポートなど)は、有料バージョンでのみ使用できます。



ただし、この蜂蜜の樽に軟膏でハエを追加する必要があります。オープンソースプログラムの一部の作成者は不満を述べています(12)スキャンで誤検知が多すぎること。





理論的には、すべてのリポジトリの自動チェックは良いことですが、実際には、特に開発リポジトリや、本番環境に移行しない古いアーカイブで、誤った「脆弱性」の報告に常に気を取られるのはあまり快適ではありません。それはすぐに退屈になります。一部の著者は言うことのほとんどの脆弱性、独自のコードでは、実際にはノイズや適用されない特定のケースです。



つまり、GitHubクローラーは、セキュリティ疲労と呼ばれる状態のすべての症状を引き起こす可能性があります。この状態の詳細については、科学記事を参照してください。(doi:10.1109 / MITP.2016.84)。人のこの状態は、安全ガイドラインに従うことへの抵抗を強め、全体的な利益とコストの分析に影響を与えると述べています。



All Articles