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

SASTアナライザー

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

静的アプリケーションセキュリティテスト (SAST) は、アナライザーを使用してソースコード内の脆弱性を検出します。各アナライザーは、サードパーティのコード分析ツールであるスキャナーのラッパーです。

アナライザーはDockerイメージとして公開され、SASTはこれを使用して各分析専用のコンテナを起動します。各アナライザーの一貫したパフォーマンスを確保するために、最小4 GBのRAMを推奨します。

SASTのデフォルトのイメージはGitLabによって管理されていますが、独自のカスタムイメージを統合することもできます。

各スキャナーに対して、アナライザーは次のことを行います:

  • その検出ロジックを公開します。
  • その実行を処理します。
  • その出力を標準形式に変換します。

公式アナライザー

SASTは、次の公式アナライザーをサポートしています:

  • gitlab-advanced-sastは、クロスファイルとクロスファンクションのテイント解析を提供し、検出精度を向上させます。Ultimateのみです。
  • kubesecは、Kubesecをベースにしています。デフォルトではオフになっています。KubeSecアナライザーを有効にするを参照してください。
  • pmd-apexは、Apex言語のルールを使用したPMDをベースにしています。
  • semgrepは、GitLab管理ルールを使用したSemgrep OSSエンジンをベースにしています。
  • sobelowは、Sobelowをベースにしています。
  • spotbugsは、Find Sec Bugsプラグイン(Ant、Gradle and wrapper、Grails、Maven and wrapper、SBT)を使用したSpotBugsをベースにしています。

サポート対象バージョン

公式アナライザーは、コンテナイメージとしてリリースされ、GitLabプラットフォームとは異なります。各アナライザーのバージョンは、限られたGitLabのバージョンセットと互換性があります。

アナライザーのバージョンが将来のGitLabのバージョンでサポートされなくなる場合、この変更は事前に発表されます。たとえば、「GitLab 17.0の発表」を参照してください。

各公式アナライザーでサポートされている主要バージョンは、SAST CI/CDテンプレートのジョブ定義に反映されています。以前のGitLabのバージョンでサポートされているアナライザーのバージョンを確認するには、SASTテンプレートファイルの履歴バージョン(GitLab 16.11.0の場合はv16.11.0-eeなど)を選択します。

サポート終了に達したアナライザー

以下のGitLabアナライザーは、サポート終了ステータスに達しており、更新プログラムを受信しません。これらは、GitLabが管理するルールを備えたSemgrepベースのアナライザーに置き換えられました。

GitLab 17.3.1以降にアップグレードすると、1回限りのデータ移行で、サポート終了に達したアナライザーの検出結果が自動的に解決されます。これには、SpotBugsがGroovyコードをスキャンし続けるため、以下に示すすべてのアナライザー(SpotBugsを除く)が含まれます。この移行では、確認または無視していない脆弱性のみが解決され、Semgrepベースのスキャンに自動的に変換された脆弱性には影響しません。詳細については、イシュー444926を参照してください。

アナライザースキャンされる言語サポート終了GitLabのバージョン
BanditPython15.4
BrakemanRuby(Ruby on Railsを含む)17.0
ReactおよびSecurityプラグインを備えたESLintReactを含むJavaScriptとTypeScript15.4
FlawfinderC、C++17.0
gosecGo15.4
MobSFAndroidアプリケーションのみのJavaおよびKotlin。iOSアプリケーションのみのObjective-C17.0
NodeJsScanJavaScript(Node.jsのみ)17.0
phpcs-security-audit(PHP)PHP17.0
Security Code Scan.NET(C#、Visual Basicを含む)16.0
SpotBugsJavaのみ115.4
SpotBugsKotlinおよびScalaのみ117.0

補足説明:

  1. SpotBugsは、Groovyでサポートされているアナライザーのままです。Groovyコードが検出された場合にのみアクティブになります。

SASTアナライザーの機能

アナライザーが一般的に利用可能と見なされるためには、少なくとも次の機能をサポートしている必要があります:

Postアナライザー

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

ポストアナライザーは、アナライザーによるレポートの出力を強化します。ポストアナライザーは、レポートの内容を直接変更しません。代わりに、次のような追加のプロパティで結果を強化します:

  • CWE。
  • 場所追跡フィールド。

Semgrepベースのスキャンへの移行

GitLab高度なSASTアナライザーに加えて、GitLabは複数の言語をカバーするSemgrepベースのアナライザーも提供します。GitLabはアナライザーを維持し、その検出ルールを作成します。これらのルールは、以前のリリースで使用されていた言語固有のアナライザーを置き換えます。

脆弱性の変換

脆弱性管理システムは、可能であれば、古いアナライザーから新しいSemgrepベースの検出結果に脆弱性を自動的に移動します。GitLab高度なSASTアナライザーへの変換については、GitLab高度なSASTドキュメントを参照してください。

これが発生すると、システムは各アナライザーからの脆弱性を単一のレコードに結合します。

ただし、次の場合、脆弱性が一致しない可能性があります:

  • 新しいSemgrepベースのルールが、古いアナライザーとは異なる場所、または異なる方法で脆弱性を検出します。
  • 以前にSASTアナライザーを無効にしました。これにより、各脆弱性に必要な識別子が記録されなくなるため、自動変換が妨げられる可能性があります。

脆弱性が一致しない場合:

  • 元の脆弱性は、脆弱性レポートで「検出されなくなった」とマークされます。
  • 次に、Semgrepベースの検出結果に基づいて新しい脆弱性が作成されます。

アナライザーのカスタマイズ

アナライザーの動作をカスタマイズするには、.gitlab-ci.ymlファイルのCI/CD変数を使用します。

カスタムDockerミラーの使用

アナライザーのイメージをホストするために、GitLabレジストリの代わりにカスタムDockerレジストリを使用できます。

前提要件:

  • カスタムDockerレジストリは、すべての公式アナライザーのイメージを提供する必要があります。

この変数は、すべてのセキュアアナライザーに影響を与え、SASTのアナライザーだけではありません。

GitLabにカスタムDockerレジストリからアナライザーのイメージをダウンロードさせるには、SECURE_ANALYZERS_PREFIXCI/CD変数でプレフィックスを定義します。

たとえば、以下はSASTにregistry.gitlab.com/security-products/semgrepではなくmy-docker-registry/gitlab-images/semgrepをプルするように指示します:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  SECURE_ANALYZERS_PREFIX: my-docker-registry/gitlab-images

すべてのデフォルトアナライザーを無効にする

すべてのデフォルトSASTアナライザーを無効にして、カスタムアナライザーのみを有効のままにすることができます。

すべてのデフォルトアナライザーを無効にするには、.gitlab-ci.ymlファイルでCI/CD変数SAST_DISABLED"true"に設定します。

例:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  SAST_DISABLED: "true"

特定のデフォルトアナライザーを無効にする

アナライザーは、検出されたソースコードの言語に従って自動的に実行されます。ただし、選択したアナライザーを無効にすることができます。

選択したアナライザーを無効にするには、実行を禁止するアナライザーをカンマ区切りの文字列でリストしたCI/CD変数SAST_EXCLUDED_ANALYZERSを設定します。

たとえば、spotbugsアナライザーを無効にするには、次のようにします:

include:
  - template: Jobs/SAST.gitlab-ci.yml

variables:
  SAST_EXCLUDED_ANALYZERS: "spotbugs"

カスタムアナライザー

CI/CD設定でジョブを定義することにより、独自のアナライザーを提供できます。デフォルトのアナライザーとの一貫性を保つために、カスタムSASTジョブにサフィックス-sastを追加する必要があります。

カスタムアナライザーの例

この例は、Dockerイメージmy-docker-registry/analyzers/csharpに基づいたスキャンジョブを追加する方法を示しています。スクリプト/analyzer runを実行し、SASTレポートgl-sast-report.jsonを出力します。

.gitlab-ci.ymlファイルで以下を定義します:

csharp-sast:
  image:
    name: "my-docker-registry/analyzers/csharp"
  script:
    - /analyzer run
  artifacts:
    reports:
      sast: gl-sast-report.json