正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

SASTルール

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLabの静的アプリケーションセキュリティテスト(SAST)では、一連のGitLabアナライザーを使用して、コードに潜在的な脆弱性がないかスキャンします。どのアナライザーを実行するかは、リポジトリで見つかったプログラミング言語に基づいて自動的に選択されます。

各アナライザーはコードを処理し、ルールを使用してコード内の考えられる脆弱性を検出します。アナライザーのルールは、レポートする脆弱性の種類を決定します。

スコープルール

SASTは、セキュリティ上の弱点と脆弱性に焦点を当てています。一般的なバグを見つけたり、コードの全体的な品質や保守性を評価したりすることを目的としていません。

GitLabは、実用的なセキュリティ上の弱点と脆弱性を特定することに重点を置いて、検出ルールセットを管理します。このルールセットは、最も影響力のある脆弱性に対して幅広いカバレッジを提供すると同時に、誤検出(脆弱性が存在しない場合にレポートされる脆弱性)を最小限に抑えるように設計されています。

SASTはデフォルトの設定で使用するように設計されていますが、必要に応じて検出ルールを設定することもできます。

ルールのソース

SASTで使用される脆弱性検出ルールは、使用されるアナライザー(GitLab高度な静的アプリケーションセキュリティテストまたはSemgrepベースのアナライザー)によって異なります。

GitLab高度なSAST

  • プラン: Ultimate

GitLabは、GitLab高度な静的アプリケーションセキュリティテストのルールを作成、維持、サポートしています。そのルールは、GitLab高度な静的アプリケーションセキュリティテストスキャンエンジンのクロスファイル、クロスファンクション分析機能を活用するためにカスタムビルドされています。GitLab高度な静的アプリケーションセキュリティテストルールセットはオープンソースではなく、他のアナライザーと同一のルールセットでもありません。

GitLab高度な静的アプリケーションセキュリティテストが検出する脆弱性の種類の詳細については、いつ脆弱性がレポートされるかを参照してください。

Semgrepベースのアナライザー

GitLabは、SemgrepベースのGitLab SASTアナライザーで使用されるルールを作成、維持、サポートしています。このアナライザーは、単一のCI/CDパイプラインジョブで多くの言語をスキャンします。次のものを組み合わせます:

その他のアナライザー

GitLab SASTは、他のアナライザーを使用して、残りのサポートされている言語をスキャンします。これらのスキャンのルールは、各スキャナーのアップストリームプロジェクトで定義されています。

ルールの更新リリース方法

GitLabは、顧客からのフィードバックと内部調査に基づいて、ルールを定期的に更新します。ルールは、各アナライザーのコンテナイメージの一部としてリリースされます。特定のバージョンにアナライザーを手動で固定する場合を除き、更新されたアナライザーとルールが自動的にリリースされます。

アナライザーとそのルールは、関連する更新プログラムが利用可能な場合、少なくとも月1回更新されます。

ルール更新ポリシー

SASTルールのアップデートは、破壊的な変更ではありません。つまり、ルールは事前の通知なしに追加、削除、または更新される可能性があります。

ただし、ルールの変更をより便利で理解しやすいものにするために、GitLabは次のことを行います:

プロジェクトでルールを設定する

変更を加える具体的な理由がない限り、デフォルトのSASTルールを使用する必要があります。デフォルトのルールセットは、ほとんどのプロジェクトに関連するように設計されています。

ただし、必要に応じて、使用するルールをカスタマイズしたり、ルールの変更をロールアウトする方法を制御したりできます。

ローカルルールの優先順位を適用する

SASTスキャンで使用されるルールをカスタマイズしたい理由は次のとおりです:

  • 組織が特定の脆弱性クラスに優先順位を割り当てている(たとえば、他のクラスの脆弱性の前にクロスサイトスクリプティング(XSS)またはSQLインジェクションに対処することを選択するなど)。
  • 特定のルールが誤検出の結果であるか、コードベースのコンテキストでは無関係であると考えています。

プロジェクトをスキャンするために使用するルールを変更したり、重大度を調整したり、その他の優先順位を適用したりするには、ルールセットをカスタマイズするを参照してください。カスタマイズが他のユーザーの役に立つ場合は、GitLabへの問題レポートを検討してください。

ルールのロールアウトを調整する

ルールの変更のロールアウトを制御するには、特定のバージョンにSASTアナライザーを固定できます。

複数のプロジェクトで同時にこれらの変更を行う場合は、次の変数の設定を検討してください:

GitLab SASTルールに関する問題のレポート

GitLabは、SASTで使用されるルールセットへのコントリビュートを歓迎します。コントリビュートは、以下に対処する可能性があります:

  • 潜在的な誤検出の結果。
  • SASTが実際に存在する可能性のある脆弱性をレポートしなかった偽陰性の結果。
  • ルールの名前、重大度評価、説明、ガイダンス、またはその他の説明コンテンツ。

検出ルールがすべてのユーザーに対して改善される可能性があると思われる場合は、以下を検討してください:

重要なルールの変更

GitLabは、定期的に SASTルールを更新します。このセクションでは、最も重要な変更点について説明します。詳細については、リリースのお知らせと、提供されている変更履歴のリンクを参照してください。

Semgrepベースのアナライザーのルールの変更

Semgrepベースのスキャン用のGitLab管理ルールセットへの主な変更点は次のとおりです:

詳細については、sast-rulesの変更履歴を参照してください。

他のアナライザーのルールの変更

アナライザーの変更履歴ファイルを参照して、各バージョンに含まれる新しいルールや更新されたルールなど、変更の詳細を確認してください。