1
1

More than 3 years have passed since last update.

GitHub Actions での C++ Code Scanning

Posted at

皆さんごきげんよう。本記事は、2021 年 7 月 7 日(米国時間)ポストされた Code Scanning C++ with GitHub Actions の速報的なアレというか意訳のようななにかとなります。内容については下記が原文で、正となります。


昨年、GitHub は Code Scanning をリリースしました。これにより、開発者はセキュリティ チェックの仕組みを CI/CD 環境や開発ワークフローに組み込むことができます。この記事では、GitHub Actions で Code Scanning のバックエンドの解析エンジンを利用するやり方について紹介します。

CodeQL とは

CodeQL は、コードベースから生成されたデータベースに対してクエリを実行することで、セキュリティ チェックを自動化する解析エンジンです。CodeQL データベースは、ビルド プロセス中に作成され、ソースコードを表形式で表現します。既定では、Code Scanning は GitHub の研究者やコミュニティが作成した標準的な CodeQL クエリを実行しますが、独自のカスタムクエリを作成して利用することもできます。

既定のセットに含まれるクエリは以下の通りです。

  • Pointer Overflow Check
  • Potentially overflowing call to snprintf
  • Uncontrolled format string

など。

uikou 注 : CodeQL は、ソースコードにおいて、セキュリティ脆弱性を分析し、発見してくれます。もともとは、アメリカの Semmle 社が開発していたものです。なお、Semmle 社は 2019 年 9 月に GitHub が買収しました。Code Scanning は、いわゆる静的アプリケーションセキュリティテスト (SAST) 手法を実現するために、GitHub のワークフローの一部として実装できる仕組みです。

sec

GitHub Actions での CodeQL 設定

Code Scanning (with CodeQL) は、Public リポジトリであれば無料で利用可能です。GitHub Enterprise では、GitHub Advanced Security の一部として提供されています。
ここでは、4 クリックであらびっくり、簡単にセットアップする手順を紹介します。以下に GIF ファイルもありますので、手順を見てみてくださいね。

sec2

これで対応 done です。
既定の CodeQL 解析ワークフローは、Default の branch に対して、Push したり、Pull Request を上げたりするたびに、コード解析をしてくれるように構成されています。つまり、新しいファイルを直接 main branch に commit したあと、コード解析が自動的に走ってくれるという事です。

コード解析のログは、Actions タブで確認できます。また、アラートは Security タブで表示、管理することができます。

アラートのベースラインを管理する

時に、とりわけ大規模なレガシー コードベースでは、圧倒的な数のアラートが出力されることがあります。そのため、CodeQL では Pull Request に含まれる新規、または修正されたアラートのみを表示するようになっています。既存のアラートを管理したい場合は、Security タブの Code scanning aleats セクションから対応します。

Sec3

DismissDelete の違いは重要です

この二つの違いを理解することは、とっても重要です。
特に重要なポイントを例にあげると、アラートを解除する (Dismissing) と、(次にスキャンされても)同じコードがアラートを再生成することはないが、アラートを削除する (Deleting) と、同じコードが次にスキャンされたとき、また同じアラートが生成されるという動作の違いがあるという事です。

アラートを一括して解除したい(bulk-dismiss) 場合は、アラートのサマリから行うことができます。(解除したいアラートのセットにリストをフィルタリングした後に行いましょう)

フィードバックおまちしてます

今回の記事は、CI/CD 環境における Code Scanning のほんのさわりです。基本を理解した後は、ご自身でオリジナルの CodeQL クエリを作成してみたり、解析頻度を調整したりしてみてください。

GitHub Actions での Code Scanning、是非おためしくださいね!


以上、Nick さんからでした。

Nick

それではみなさんごきげんよう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1