クイズの説明
Step 2「SAST/DAST/SCAを統合しよう」の理解度を確認します。各テスト手法の特性、ツール選定、パイプライン統合の設計について問います。
合格ライン: 80%(5問中4問正解)
問題
Q1. SASTの汚染解析
SASTの汚染解析(Taint Analysis)において、以下の概念の説明として正しいものはどれですか?
- A. Source = データベース、Sink = ユーザーへの出力、Sanitizer = ファイアウォール
- B. Source = ユーザーからの入力、Sink = 危険な操作(SQLクエリ実行等)、Sanitizer = 入力検証やエスケープ
- C. Source = CI/CDパイプライン、Sink = 本番デプロイ、Sanitizer = コードレビュー
- D. Source = 脆弱性データベース、Sink = アプリケーションコード、Sanitizer = パッチ適用
答えを見る
正解: B
汚染解析は、信頼できない外部入力(Source)が適切な無害化(Sanitizer)を経ずに、危険な操作(Sink)に到達するパスを検出する手法です。Sourceはreq.body、req.query等のユーザー入力、SinkはSQLクエリ実行、HTMLレンダリング、OSコマンド実行等、Sanitizerはパラメータ化クエリ、HTMLエスケープ、入力バリデーション等が該当します。Source→(Sanitizerなし)→Sinkのパスが存在する場合、SASTは脆弱性として報告します。
Q2. SASTとDASTの使い分け
以下の脆弱性のうち、SASTでは検出が困難で、DASTで検出しやすいものはどれですか?
- A. SQLインジェクション(パラメータ化クエリの未使用)
- B. ハードコードされたAPIキー
- C. CORSの設定ミス(Access-Control-Allow-Origin: *)
- D. XSSを引き起こすエスケープ処理の欠如
答えを見る
正解: C
CORSの設定ミスはHTTPレスポンスヘッダーの問題であり、アプリケーションの実行時設定に依存します。SASTはソースコードを解析しますが、ランタイムのHTTPレスポンスヘッダーを確認することはできません。DASTは実際にリクエストを送信してレスポンスヘッダーを解析するため、CORS設定の問題を効果的に検出できます。SQLインジェクション(A)、ハードコードされたシークレット(B)、XSSのエスケープ欠如(D)はいずれもソースコードレベルの問題であり、SASTで検出可能です。
Q3. SBOMの活用
SBOMの最も重要な活用シーンとして適切なものはどれですか?
- A. アプリケーションのパフォーマンスベンチマークを実施する
- B. 新しい脆弱性(CVE)が公開された際に、影響を受けるシステムを迅速に特定する
- C. ユーザーにアプリケーションの技術スタックを公開する
- D. 開発者の生産性を測定する
答えを見る
正解: B
SBOM(Software Bill of Materials)は、ソフトウェアに含まれるすべてのコンポーネント(ライブラリ、ランタイム等)のリストです。最も重要な活用シーンは、新しいCVEが公開された際に、SBOMを検索して影響を受けるシステム・バージョンを数分で特定できることです。SBOMがなければ、各チームに確認依頼を出して数日かけて影響調査をする必要があります。Log4Shellのような緊急性の高い脆弱性では、SBOMの有無が対応速度に大きな差を生みます。
Q4. セキュリティテストピラミッド
セキュリティテストピラミッドにおいて、「プリコミットフック」でシークレットスキャンを実行する理由として最も適切なものはどれですか?
- A. シークレットスキャンは実行に最も時間がかかるため、早めに開始する必要がある
- B. シークレットがリポジトリにコミットされてしまうと、git historyから完全に削除することが極めて困難なため、コミット前に阻止する
- C. プリコミットフックでしかシークレットを検出できないため
- D. CI/CDパイプラインの実行コストを削減するため
答えを見る
正解: B
シークレット(APIキー、パスワード等)がgitリポジトリにコミットされると、git historyに残り続けます。その後のコミットで削除しても、git logやgit reflogから復元可能です。完全に削除するにはgit filter-branchやBFG Repo-Cleanerを使う必要があり、全開発者にforce pullを要求するなど大きな影響があります。さらに、GitHubにpushされた場合はキャッシュやフォークに残る可能性もあります。プリコミットフックでコミット前にシークレットを検出・阻止することで、この問題を根本的に防ぎます。
Q5. セキュリティゲートの設計
PCI-DSS準拠が求められるシステムのCI/CDパイプラインにおいて、以下のセキュリティゲートポリシーのうち、最も適切なものはどれですか?
- A. すべてのセキュリティチェックを警告のみとし、開発者の自主的な修正に委ねる
- B. Critical脆弱性のみマージブロックし、High以下は月次レポートで対応状況を追跡する
- C. すべてのセキュリティ検出(Low含む)でマージブロックし、100%クリーンを維持する
- D. セキュリティチェックは本番デプロイ前のみ実施し、開発フローには組み込まない
答えを見る
正解: B
PCI-DSS準拠環境では、Critical脆弱性は即時対応が必要です(PCI-DSS 6.2: 重大な脆弱性を特定後1ヶ月以内に対応)。CriticalをマージブロックすることでPCI-DSSの要件を満たしつつ、High以下は月次レポートで追跡することで開発速度とのバランスを取ります。A(警告のみ)はPCI-DSSの要件を満たせません。C(全レベルブロック)はLowの誤検知でも開発が止まり、現実的ではありません。D(本番前のみ)はShift Leftの原則に反し、修正コストが増大します。
結果
合格(4問以上正解)
Step 2の内容をよく理解しています。SAST、DAST、SCAの特性を把握し、CI/CDパイプラインへの統合設計ができるようになりました。次のStep 3「シークレット管理を設計しよう」に進みましょう。
不合格(3問以下正解)
Step 2の内容を復習しましょう。特に以下のポイントを重点的に確認してください:
- SAST — 汚染解析の概念(Source/Sink/Sanitizer)
- DASTとSASTの補完関係 — それぞれが得意な検出領域
- SBOM — サプライチェーンセキュリティにおける役割
- パイプライン設計 — テストピラミッドとゲートポリシーのバランス
推定所要時間: 30分