SASTルール

GitLab SASTは、潜在的な脆弱性についてコードをスキャンするために、一連のアナライザを使用します。各アナライザはコードを処理した後、ソースコードの可能性のある弱点を見つけるためにルールを使用します。ルールは、アナライザが報告する脆弱性の種類を決定します。

ルールのソース

Semgrepベースのアナライザー

GitLabはSemgrepベースのGitLab SASTアナライザで使用されるルールを作成、メンテナー、サポートします。このアナライザーは一つのCI/CDパイプラインジョブで多くの言語をスキャンします。組み合わせは以下の通りです:

  • Semgrepオープンソースエンジン
  • GitLabが管理する検出ルール。
  • 脆弱性追跡と 誤検知のためのGitLab独自のテクノロジー。

その他のアナライザー

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

ルールのアップデートのリリース方法

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

アナライザとそのルールは、関連するアップデートがある場合、少なくとも毎月更新されます。

Semgrepベースのアナライザ用のGitLabルールセットは、GitLabが管理するオープンソースsast-rules プロジェクト。ルールが更新されると、Semgrepベースのアナライザのコンテナイメージの一部としてリリースされます。

プロジェクトのルール設定

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

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

ローカルルール設定の適用

SASTスキャンで使用するルールをカスタマイズしたい場合があります:

  • たとえば、クロスサイトスクリプティング((XSS) )や SQL インジェクションを他の脆弱性クラスよりも優先してアドレス指定するなどです。
  • 特定のルールが誤検出である、またはコードベースのコンテキストに関連していないと考えている場合。

プロジェクトのスキャンに使用するルールを変更したり、重大度を調整したり、その他の設定を適用したりするには、ルールセットのカスタマイズをご覧ください。あなたのカスタマイズが他のユーザーのためになるのであれば、GitLab に問題を報告することを検討してください。

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

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

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

GitLab SASTルールの問題をレポーター

GitLabはSASTで使われるルールセットへの貢献を歓迎します。貢献するアドレスは以下の通りです:

  • 潜在的脆弱性が正しくない場合の誤検出。
  • 偽陰性の結果:SAST が本当に存在する脆弱性を報告しなかった場合。
  • ルールの名前、重大度評価、説明、ガイダンス、その他の説明内容。

検出ルールがすべてのユーザーにとって改善されると思われる場合は、検討してください:

  • sast-rules リポジトリにマージリクエストを提出してください。詳細は貢献の説明をご覧ください。
  • gitlab-org/gitlab issue trackerにイシューを提出します。
    • あなたのイシューが正しいトリアージワークフローに置かれるように、@gitlab-bot label ~"group::static analysis" ~"Category:SAST" とコメントを投稿してください。

重要なルールの変更

GitLabはSASTルールを定期的に更新しています。このセクションでは最も重要な変更点を紹介します。より詳細な情報はリリースアナウンスやCHANGELOGのリンクにあります。

Semgrepベースのアナライザーにおけるルールの変更

GitLabが管理するSemgrepベースのスキャンのルールセットに対する主な変更点は以下の通りです:

  • GitLab 16.3から、GitLab静的解析チームと脆弱性調査チームは、偽陽性の結果が多すぎたり、アクション可能な真の陽性結果が少なかったりする傾向のあるルールの削除に取り組んでいます。これらの削除されたルールによる既存の発見は自動的に解決され、セキュリティダッシュボードや 脆弱性レポートのデフォルトビューには表示されなくなります。この作業はエピック 10907で追跡されています。
  • GitLab 16.0 から 16.2 において、GitLab 脆弱性調査チームは各結果に含まれるガイダンスを更新しました。
  • GitLab 15.10では、detect-object-injection のルールはデフォルトで削除され、その調査結果は自動的に解決されました。

詳細はsast-rules](https://gitlab.com/gitlab-org/security-products/sast-rules/-/blob/main/CHANGELOG.md)の[CHANGELOG をご覧ください。

他の分析装置におけるルールの変更

各バージョンに含まれる新規または更新されたルールを含む変更点の詳細については、各分析ツールのCHANGELOGファイルを参照してください。