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

From the security view, you can view, fix, dismiss, or delete alerts for potential vulnerabilities or errors in your project's code.

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のアップロードは、アップロードごとに最大で5000件の結果をサポートしています。 この制限を超えた結果は無視されます。 ツールがあまりに多くの結果を生成する場合、最も重要なルールやクエリに対する結果に焦点を当てるよう、設定を更新すべきです。

アラートの詳細について

各アラートはコードの問題と、それを特定したツールの名前を表示します。 アラートをトリガーしたコード行と、アラートのプロパティ(問題の重要度や性質など)を確認できます。 アラートは、問題が最初に発生したときにも通知します。 CodeQL 解析で特定されたアラートについては、問題を解説する方法についての情報も表示されます。

code scanning からのアラートの例

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

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

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

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

[Security] タブでリポジトリのすべてのアラートの概要を表示するには、書き込み権限が必要です。 デフォルトでは、アラートはデフォルトブランチに対して表示されます。

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

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

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

  4. Optionally, use the free text search box or the drop-down menus to filter alerts. For example, you can filter by the tool that was used to identify alerts. Filter by tool

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

    アラートの概要

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

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

Searching code scanning alerts

You can search the list of alerts. This is useful if there is a large number of alerts in your repository, or if you don't know the exact name for an alert for example. GitHub performs the free text search across:

  • The name of the alert

  • The alert description

  • The alert details (this also includes the information hidden from view by default in the Show more collapsible section)

    The alert information used in searches

Supported searchSyntax exampleResults
Single word searchinjectionReturns all the alerts containing the word injection
Multiple word searchsql injectionReturns all the alerts containing sql or injection
Exact match search
(use double quotes)
"sql injection"Returns all the alerts containing the exact phrase sql injection
OR searchsql OR injectionReturns all the alerts containing sql or injection
AND searchsql AND injectionReturns all the alerts containing both words sql and injection

参考:

  • The multiple word search is equivalent to an OR search.
  • The AND search will return results where the search terms are found anywhere, in any order in the alert name, description, or details.
  1. GitHubで、リポジトリのメインページにアクセスしてください。
  2. リポジトリ名の下で Security(セキュリティ)をクリックしてください。 セキュリティのタブ
  3. 左のサイドバーで、Code scanning alerts(コードスキャンニングアラート)をクリックしてください。 "コードスキャンニングアラート"タブ
  4. To the right of the Filters drop-down menus, type the keywords to search for in the free text search box. The free text search box
  5. Press return. The alert listing will contain the open code scanning alerts matching your search criteria.

アラートを解決する

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

リポジトリへの書き込み権限がある場合は、アラートの概要を表示して、[Closed] をクリックすることで、解決したアラートを表示できます。 詳しい情報については、「リポジトリのアラートを表示する」を参照してください。 The "Closed" list shows fixed alerts and alerts that users have dismissed.

You can use the free text search or the filters to display a subset of alerts and then in turn mark all matching alerts as closed.

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

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

Dismissing or deleting alerts

There are two ways of closing an alert. You can fix the problem in the code, or you can dismiss the alert. Alternatively, if you have admin permissions for the repository, you can delete alerts. Deleting alerts is useful in situations where you have set up a code scanning tool and then decided to remove it, or where you have configured CodeQL analysis with a larger set of queries than you want to continue using, and you've then removed some queries from the tool. In both cases, deleting alerts allows you to clean up your code scanning results. You can delete alerts from the summary list within the Security tab.

Dismissing an alert is a way of closing an alert that you don't think needs to be fixed. たとえば、テストで使われるだけのコードのエラーや、エラーを修正するための労力がコードを改善することによる潜在的な利点よりも大きい場合です。 You can dismiss alerts from code scanning annotations in code, or from the summary list within the Security tab.

When you dismiss an alert:

  • It's dismissed in all branches.
  • The alert is removed from the number of current alerts for your project.
  • The alert is moved to the "Closed" list in the summary of alerts, from where you can reopen it, if required.
  • The reason why you closed the alert is recorded.
  • Next time code scanning runs, the same code won't generate an alert.

When you delete an alert:

  • It's deleted in all branches.
  • The alert is removed from the number of current alerts for your project.
  • It is not added to the "Closed" list in the summary of alerts.
  • If the code that generated the alert stays the same, and the same code scanning tool runs again without any configuration changes, the alert will be shown again in your analysis results.

To dismiss or delete alerts:

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

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

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

  4. If you have admin permissions for the repository, and you want to delete alerts for this code scanning tool, select some or all of the check boxes and click Delete.

    Deleting alerts

    Optionally, you can use the free text search or the filters to display a subset of alerts and then delete all matching alerts at once. For example, if you have removed a query from CodeQL analysis, you can use the "Rule" filter to list just the alerts for that query and then select and delete all of those alerts.

    Filter alerts by rule

  5. If you want to dismiss an alert, it's important to explore the alert first, so that you can choose the correct dismissal reason. Click the alert you'd like to explore.

    Open an alert from the summary list

  6. Review the alert, then click Dismiss and choose a reason for closing the alert. Choosing a reason for dismissing an alert

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

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

Dismissing multiple alerts at once

If a project has multiple alerts that you want to dismiss for the same reason, you can bulk dismiss them from the summary of alerts. Typically, you'll want to filter the list and then dismiss all of the matching alerts. For example, you might want to dismiss all of the current alerts in the project that have been tagged for a particular Common Weakness Enumeration (CWE) vulnerability.

参考リンク

このドキュメントは役立ちましたか?プライバシーポリシー

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

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

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

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

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

GitHubコミュニティで質問するサポートへの連絡