リポジトリのコードスキャンアラートを管理する

セキュリティビューから、プロジェクトのコードに存在する潜在的な脆弱性やエラーのアラートを表示、修正、却下、削除することができます。

If you have write permission to a repository you can manage code scanning alerts for that repository.

Code scanningは、Organizationが所有するリポジトリでGitHub Advanced Securityが有効化されていれば利用できます。 詳しい情報については、「GitHub Advanced Security について」を参照してください。

code scanning からのアラートについて

デフォルトの CodeQL 解析、サードパーティーの解析、または複数のタイプの解析を使用して、リポジトリのコードをチェックするため、code scanning をセットアップできます。 解析が完了すると、解析によるアラートがリポジトリのセキュリティビューに隣り合わせで表示されます。 サードパーティツールまたはカスタムクエリの結果には、GitHub のデフォルト CodeQL 解析により検出されたアラートで表示されるプロパティの一部が含まれていない場合があります。 詳しい情報については、「リポジトリに対する code scanning をセットアップする」を参照してください。

デフォルトでは、code scanning はプルリクエスト中にデフォルトブランチのコードを定期的に解析します。 プルリクエストでアラートを管理する方法については、「プルリクエストで code scanning アラートをトリガーする」を参照してください。

ノート:

  • SARIF upload supports a maximum of 5000 results per upload. この制限を超えた結果は無視されます。 ツールがあまりに多くの結果を生成する場合、最も重要なルールやクエリに対する結果に焦点を当てるよう、設定を更新すべきです。

  • For each upload, SARIF upload supports a maximum size of 10 MB for the gzip-compressed SARIF file. Any uploads over this limit will be rejected. If your SARIF file is too large because it contains too many results, you should update the configuration to focus on results for the most important rules or queries.

アラートの詳細について

各アラートはコードの問題と、それを特定したツールの名前を表示します。 You can see the line of code that triggered the alert, as well as properties of the alert, such as the severity, security severity, and the nature of the problem. アラートは、問題が最初に発生したときにも通知します。 CodeQL 解析で特定されたアラートについては、問題を解説する方法についての情報も表示されます。

code scanning からのアラートの例

CodeQL を使用して code scanning をセットアップした場合、コード内のデータフロー問題も検出できます。 データフロー解析は、データを安全でない方法で利用する、関数に危険な引数を渡す、機密情報を漏洩するなど、コードにおける潜在的なセキュリティ問題を検出します。

code scanning がデータフローアラートを報告すると、GitHub はデータがコードを通してどのように移動するかを示します。 Code scanning を使用すると、機密情報を漏洩し、悪意のあるユーザによる攻撃の入り口になる可能性があるコードの領域を特定できます。

About severity levels

Alert severity levels may be Error, Warning, or Note.

By default, any code scanning results with a severity of error will cause check failure. You can specify the severity level at which pull requests that trigger code scanning alerts should fail. For more information, see "Defining the severities causing pull request check failure."

About security severity levels

Code scanning displays security severity levels for alerts that are generated by security queries. Security severity levels can be Critical, High, Medium, or Low.

To calculate the security severity of an alert, we use Common Vulnerability Scoring System (CVSS) data. CVSS is an open framework for communicating the characteristics and severity of software vulnerabilities, and is commonly used by other security products to score alerts. For more information about how severity levels are calculated, see the blog post.

By default, any code scanning results with a security severity of Critical or High will cause a check failure. You can specify which security severity level for code scanning results should cause a check failure. For more information, see "Defining the severities causing pull request check failure."

リポジトリのアラートを表示する

リポジトリへの書き込み権限があるユーザなら誰でも、プルリクエストの code scanning アノテーションを表示できます。 詳しい情報については、「プルリクエストで code scanning アラートをトリガーする」を参照してください。

[Security] タブでリポジトリのすべてのアラートの概要を表示するには、書き込み権限が必要です。

By default, the code scanning alerts page is filtered to show alerts for the default branch of the repository only.

  1. GitHub Enterprise Serverで、リポジトリのメインページにアクセスしてください。

  2. リポジトリ名の下で Security(セキュリティ)をクリックしてください。 セキュリティのタブ

  3. 左のサイドバーで、Code scanning alerts(コードスキャンニングアラート)をクリックしてください。 "コードスキャンニングアラート"タブ

  4. Optionally, use the free text search box or the drop-down menus to filter alerts. たとえば、アラートを識別するために使われたツールによってフィルタリングできます。 Filter by tool

  5. [Code scanning] で、調査するアラートをクリックします。

    アラートの概要

  6. アラートでデータフローの問題が強調表示された場合は、必要に応じて [Show paths] をクリックし、データソースから、それが使用されているシンクまでのパスを表示します。 アラートの [Show paths] リンク

  7. CodeQL 解析によるアラートには、問題の説明も含まれています。 コードを修正する方法についてのガイダンスを表示するには、[Show more] をクリックします。 アラートの詳細情報

ノート: CodeQLでのcode scanning分析に対して、リポジトリのcode scanningアラートのリストの上部にあるヘッダ中で、最新の実行に関する情報を見ることができます。

たとえば、最後のスキャンが実行されたのがいつか、リポジトリ中のコードの合計行数に対する分析されたコードの行数、生成されたアラートの合計数を見ることができます。 UIバナー

Filtering code scanning alerts

You can filter the alerts shown in the code scanning alerts view. This is useful if there are many alerts as you can focus on a particular type of alert. There are some predefined filters and a range of keywords that you can use to refine the list of alerts displayed.

  • To use a predefined filter, click Filters, or a filter shown in the header of the list of alerts, and choose a filter from the drop-down list. Predefined filters
  • To use a keyword, either type directly in the filters text box, or:
    1. Click in the filters text box to show a list of all available filter keywords.
    2. Click the keyword you want to use and then choose a value from the drop-down list. Keyword filters list

The benefit of using keyword filters is that only values with results are shown in the drop-down lists. This makes it easy to avoid setting filters that find no results.

If you enter multiple filters, the view will show alerts matching all these filters. For example, is:closed severity:high branch:main will only display closed high-severity alerts that are present on the main branch. The exception is filters relating to refs (ref, branch and pr): is:open branch:main branch:next will show you open alerts from both the main branch and the next branch.

Restricting results to application code only

You can use the "Only alerts in application code" filter or autofilter:true keyword and value to restrict results to alerts in application code. Application code excludes the following.

  • Code generated by the build process
  • Test code
  • Library or third-party code
  • ドキュメント

Code scanning categorizes files by file path. At this time, you cannot manually categorize source files.

code scanningアラートの検索

アラートのリストを検索できます。 これは、リポジトリ中に大量のアラートがある場合や、たとえばアラートの正確な名前を知らないような場合に役立ちます。 GitHub Enterprise Serverは以下に渡って自由テキスト検索を行います。

  • アラート名

  • アラートの説明

  • アラートの詳細(これにはデフォルトではビューから隠されている、折りたたみ可能なShow more(さらに表示)セクション中の情報も含まれます)

    検索で使われたアラートの情報

サポートされている検索構文の例結果
単一語検索injectioninjectionという語を含むすべてのアラートを返す
複数語検索sql injectionsqlあるいはinjectionを含むすべてのアラートを返す
完全一致検索
(ダブルクオートを使う)
"sql injection"厳密にsql injectionというフレーズを含むすべてのアラートを返す
OR検索sql OR injectionsqlあるいはinjectionを含むすべてのアラートを返す
AND検索sql AND injectionsql及びinjectionという両方の語を含むすべてのアラートを返す

参考:

  • 複数語検索はOR検索と等価です。
  • AND検索は検索語がアラート名、説明、詳細の中にどういった順序でどこにあっても結果を返します。
  1. GitHub Enterprise Serverで、リポジトリのメインページにアクセスしてください。
  2. リポジトリ名の下で Security(セキュリティ)をクリックしてください。 セキュリティのタブ
  3. 左のサイドバーで、Code scanning alerts(コードスキャンニングアラート)をクリックしてください。 "コードスキャンニングアラート"タブ
  4. Filters(フィルタ)ドロップダウンメニューの右で、自由テキスト検索ボックスに検索するキーワードを入力してください。 自由テキスト検索ボックス
  5. returnを押してください。 アラートリストには、検索条件にマッチしたオープンなcode scanningアラートが含まれます。

アラートを解決する

リポジトリへの書き込み権限があるユーザなら誰でも、コードに修正をコミットしてアラートを解決できます。 リポジトリでプルリクエストに対して code scanning が実行されるよう予定されている場合は、修正してプルリクエストを発行するようお勧めします。 これにより、変更の code scanning 解析がトリガーされ、修正で新しい問題が入り込まないようテストされます。 詳しい情報については、「code scanning を設定する」および「プルリクエストで code scanning アラートをトリガーする」を参照してください。

リポジトリへの書き込み権限がある場合は、アラートの概要を表示して、[Closed] をクリックすることで、解決したアラートを表示できます。 詳しい情報については、「リポジトリのアラートを表示する」を参照してください。 "Closed"リストは、修正されたアラートと、ユーザが却下したアラートを示します。

自由テキスト検索もしくはフィルタを使って、アラートの一部を表示してから、マッチするすべてのアラートをクローズされたものとしてマークできます。

あるブランチでは解決されたアラートが、別のブランチでは解決されていないことがあります。 アラートの概要で [Branch] ドロップダウンメニューを使用し、特定のブランチでアラートが解決されたかどうか確認できます。

ブランチによるアラートのフィルタリング

アラートの却下もしくは削除

アラートをクローズする方法は2つあります。 コード中の問題を修正するか、アラートを却下できます。 あるいは、リポジトリの管理権限を持っているなら、アラートを削除できます。 アラートの削除は、code scanningツールをセットアップした後に、それを削除する事にした場合、あるいは使い続けたいよりも大きなクエリセットでCodeQL分析を設定してしまい、ツールからいくつかのクエリを削除した場合といった状況で役立ちます。 どちらの場合も、アラートを削除することでcode scanningの結果をクリーンアップできます。 Security(セキュリティ)タブ内でサマリリストからアラートを削除できます。

アラートの却下は、修正の必要がないと考えるアラートをクローズする方法です。 たとえば、テストで使われるだけのコードのエラーや、エラーを修正するための労力がコードを改善することによる潜在的な利点よりも大きい場合です。 アラートはコード中のcode scanningアノテーションから、あるいはSecurity(セキュリティ)タブ内のサマリリストから却下できます。

アラートを却下すると:

  • それはすべてのブランチで却下されます。
  • アラートはプロジェクトの現在のアラート数から除外されます。
  • アラートはアラートのサマリの"Closed"リストに移動されます。必要な場合は、そこからアラートを再オープンできます。
  • アラートをクローズした理由は記録されます。
  • 次にcode scanningが実行されたとき、同じコードはアラートを生成しません。

アラートを削除すると:

  • それはすべてのブランチで削除されます。
  • アラートはプロジェクトの現在のアラート数から除外されます。
  • そのアラートはアラートのサマリの"Closed"リストには追加されません
  • アラートを生成したコードがそのままになっていて、同じcode scanningツールが設定変更無く再度実行されれば、分析結果にはそのアラートが再び示されます。

アラートを却下もしくは削除するには:

  1. GitHub Enterprise Serverで、リポジトリのメインページにアクセスしてください。

  2. リポジトリ名の下で Security(セキュリティ)をクリックしてください。 セキュリティのタブ

  3. 左のサイドバーで、Code scanning alerts(コードスキャンニングアラート)をクリックしてください。 "コードスキャンニングアラート"タブ

  4. リポジトリの管理権限を持っていて、このcode scanningツールでアラートを削除したいなら、チェックボックスの一部もしくはすべてを選択して、Delete(削除)をクリックしてください。

    アラートの削除

    あるいは自由テキスト検索もしくはフィルタを使ってアラートの一部を表示させ、マッチするすべてのアラートを一度に削除することができます。 たとえば、クエリをCodeQL分析から削除したら、"Rule"フィルタを使ってそのクエリに対するアラートだけをリストして、それらのアラートをすべて選択して削除できます。

    ルールによるアラートのフィルタリング

  5. アラートを却下したい場合、そのアラートをまず調べて、却下する正しい理由を選択できるようにすることが重要です。 調べたいアラートをクリックしてください。

    サマリリストからのアラートのオープン

  6. アラートをレビューして、Dismiss(却下)をクリックし、アラートをクローズする理由を選択してください。 アラートを却下する理由の選択

    クエリが将来の分析に含まれ続けるかに影響することがあるので、ドロップダウンメニューから適切な理由を選択することは重要です。

    CodeQLのアラートを、たとえばコードがサポートされていないサニタイズのライブラリを使っているといった理由で偽陽性の結果として却下する場合、CodeQLに貢献して分析を改善することを検討してください。 CodeQLに関する詳しい情報については「CodeQLに貢献する」を参照してください。

複数のアラートを一度に却下する

同じ理由で却下したい複数のアラートがプロジェクトにあるなら、アラートのサマリからそれらをまとめて却下できます。 通常は、リストをフィルタしてマッチするアラートをすべて却下することになるでしょう。 たとえば、プロジェクト中で特定の共通脆弱性タイプ (CWE)の脆弱性がタグ付けされた現在のアラートをすべて却下したいことがあるでしょう。

参考リンク

このドキュメントは役立ちましたか?

プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?