GitLab SASTを評価する
- プラン: Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
組織でGitLab SASTを使用する前に、それを評価することを選択できます。評価を計画し実施する際は、以下のガイダンスを考慮してください。
重要な概念
GitLab SASTは、チームが共同で記述するコードのセキュリティを向上させるように設計されています。コードをスキャンして結果を表示する手順は、スキャン対象のソースコードリポジトリを中心にしています。
スキャンプロセス
GitLab SASTは、プロジェクト内で見つかったプログラミング言語に応じて、適切なスキャン技術を自動的に選択します。Groovyを除くすべての言語について、GitLab SASTはコンパイルやビルドステップを必要とせずにソースコードを直接スキャンします。これにより、さまざまなプロジェクトでスキャンを有効にすることが容易になります。詳細については、サポートされている言語とフレームワークを参照してください。
脆弱性が報告されるタイミング
GitLab SASTのアナライザーとそれらのルールは、開発チームとセキュリティチームにとってノイズを最小限に抑えるように設計されています。
GitLab Advanced SASTアナライザーが脆弱性を報告するタイミングの詳細については、脆弱性検出基準を参照してください。
その他のプラットフォーム機能
SASTは、Ultimateの他のセキュリティおよびコンプライアンス機能と統合されています。GitLab SASTを他の製品と比較する場合、その機能の一部がSASTではなく、関連するGitLabの機能領域に含まれている場合があります:
- IaCスキャンは、Infrastructure as Code (IaC) 定義のセキュリティ問題をスキャンします。
- シークレット検出は、コード内の流出したシークレットを検出します。
- セキュリティポリシーを使用すると、スキャンの実行を強制したり、脆弱性が修正されることを要求したりできます。
- 脆弱性管理とレポートは、コードベースに存在する脆弱性を管理し、イシュートラッカーと統合します。
- GitLab Duoの脆弱性の説明と脆弱性の修正は、AIを使用して脆弱性を迅速に修正するのに役立ちます。
テスト用のコードベースを選択する
SASTをテストするコードベースを選択する際は、以下の点に注意してください:
- 通常開発を中断することなく、CI/CD設定を安全に変更できるリポジトリでテストしてください。SASTスキャンはCI/CDパイプラインで実行されるため、CI/CD設定を少し編集してSASTを有効にする必要があります。
- テスト用に既存のリポジトリをフォークまたはコピーできます。この方法により、通常開発を中断することなく、テスト環境をセットアップできます。
- 組織の標準的な技術スタックに一致するコードベースを使用してください。
- GitLab Advanced SASTがサポートしている言語を使用してください。GitLab Advanced SASTは、他のアナライザーよりも正確な結果を生成します。
テストプロジェクトにはUltimateが必要です。Ultimateのみが次の機能を含んでいます:
- GitLab Advanced SASTによる独自のクロスファイル、クロスファンクションスキャン。
- マージリクエストウィジェット、パイプラインセキュリティレポート、デフォルト-ブランチ脆弱性レポートにより、スキャン結果が可視化され、対処可能になります。
ベンチマークとサンプルプロジェクト
ベンチマークまたは意図的に脆弱性のあるアプリケーションをテストに使用する場合、これらのアプリケーションは次の点に注意してください:
- 特定の脆弱性タイプに焦点を当てます。ベンチマークの焦点は、組織が検出と修正のために優先する脆弱性タイプとは異なる場合があります。
- 組織がソフトウェアをビルドする方法とは異なる特定の技術を特定の形で使用します。
- 特定の基準を他の基準よりも暗黙的に強調する形で結果をレポートします。たとえば、精度 (より少ない誤検出結果) を優先するかもしれませんが、ベンチマークは再現率 (より少ない偽陰性結果) に基づいてのみスコアを付けます。
エピック15296は、テスト対象として推奨する具体的なプロジェクトの選定作業を追跡しています。
AIが生成したテストコード
AIツールを使用して、SASTテスト用の脆弱なコードを作成しないでください。AIモデルは、実際には悪用できないコードを返すことがよくあります。
例:
- AIツールは、実際にはユーザー入力を受け取らないにもかかわらず、パラメータを受け取ってそれを機密性の高いコンテキスト(「シンク」と呼ばれる)で使用する小さな関数を記述することがよくあります。その関数が定数のようなプログラム制御の値でのみ呼び出されるのであれば、これは安全な設計と言えます。ユーザー入力がサニタイズや検証なしにこれらのシンクに流れない限り、コードに脆弱性はありません。
- AIツールは、脆弱性の一部をコメントアウトして、誤ってコードを実行するのを防ぐ場合があります。
これらの非現実的な例で脆弱性を報告すると、実際のコードで誤検出結果が発生する可能性があります。GitLab SASTは、これらのケースで脆弱性を報告するようには設計されていません。
テストを実施する
前提条件:
- プロジェクトのメンテナーまたはオーナーのロール。
テストするコードベースを選択したら、テストを実施する準備が整います。次の手順に従ってください:
- CI/CD設定にSASTを追加するマージリクエスト (MR) を作成して、SASTを有効にします。
- より正確な結果を得るために、CI/CD変数を設定してGitLab Advanced SASTをオンにするようにしてください。
- MRをリポジトリのデフォルトブランチにマージする。
- 脆弱性レポートを開いて、デフォルトブランチで見つかった脆弱性を確認してください。
- GitLab Advanced SASTを使用している場合は、スキャナーフィルターを使用して、そのスキャナーからの結果のみを表示できます。
- 脆弱性結果をレビューします。
- 新しいコードが開発されるにつれてスキャンがどのように機能するかを確認するには、アプリケーションコードを変更し、新しい脆弱性または弱点を追加する新しいマージリクエストを作成します。