QUIZ 15分

チェックポイント:セキュリティツールを導入しよう

クイズの説明

Step 5で学んだ内容の理解度をチェックします。

  • 全8問
  • 合格ライン: 80%(7問正解)
  • 不合格の場合は復習してから再挑戦してください

問題

Q1. SASTが検出できない脆弱性はどれですか?

  • A) ハードコードされたAPIキー
  • B) SQL文の文字列連結
  • C) 本番環境の設定ミス(不要なポートが開いている)
  • D) eval() の使用
<details> <summary>答えを見る</summary>

正解: C

SASTはソースコードを静的に分析するため、実行環境の設定ミスは検出できません。 本番環境の設定ミス(ポートの開放、不要なサービス、デフォルトパスワード等)は、 DAST やインフラ設定の監査で検出します。

A、B、Dはいずれもソースコードに含まれる問題のため、SASTで検出可能です。

</details>

Q2. CodeQLの特徴として正しいものはどれですか?

  • A) 実行中のアプリケーションをテストする
  • B) データフロー分析でソースからシンクまでの値の流れを追跡する
  • C) 依存パッケージの脆弱性のみをチェックする
  • D) コードのフォーマットを自動修正する
<details> <summary>答えを見る</summary>

正解: B

CodeQL はセマンティックコード分析ツールで、データフロー分析が強力な特徴です。 ユーザー入力(ソース)からデータベースクエリ(シンク)までの値の流れを追跡し、 途中でサニタイズされていない場合に脆弱性として報告します。

Aは DAST、Cは SCA の説明です。

</details>

Q3. OWASP ZAP のベースラインスキャンの目的として正しいものはどれですか?

  • A) ソースコードの品質を分析する
  • B) 依存パッケージの脆弱性をチェックする
  • C) 実行中のアプリに対して基本的な脆弱性テストを実行する
  • D) データベースのパフォーマンスを測定する
<details> <summary>答えを見る</summary>

正解: C

OWASP ZAP のベースラインスキャンは、実行中のWebアプリケーションに対して パッシブスキャン(リクエスト/レスポンスの分析)を中心に基本的な脆弱性テストを行います。

セキュリティヘッダーの欠如、Cookie設定の問題、情報漏洩などを検出します。 フルスキャンに比べて短時間で完了するため、CI/CDパイプラインに組み込みやすいです。

</details>

Q4. Dependabotの役割として正しいものはどれですか?

  • A) コードの脆弱性を自動修正する
  • B) 依存パッケージの更新PRを自動作成する
  • C) デプロイを自動化する
  • D) テストを自動生成する
<details> <summary>答えを見る</summary>

正解: B

Dependabot は依存パッケージの新バージョン(特にセキュリティ修正を含むもの)を 検出し、バージョンを更新するPull Requestを自動的に作成します。

開発者はPRをレビューし、CIテストが通ればマージするだけで パッケージを最新の安全なバージョンに更新できます。

</details>

Q5. CVSSスコアが9.5の脆弱性の深刻度と対応方針として正しいものはどれですか?

  • A) Low: 次回メンテナンス時に対応
  • B) Medium: 計画的に対応
  • C) High: 早急に対応
  • D) Critical: 即座に対応
<details> <summary>答えを見る</summary>

正解: D

CVSSスコア 9.0-10.0 は Critical(致命的)に分類されます。 リモートコード実行やデータの完全な漏洩が可能な脆弱性が該当し、 発見次第、即座に対応する必要があります。

Log4Shell(CVE-2021-44228)はCVSSスコア10.0でした。

</details>

Q6. シフトレフトの考え方として正しいものはどれですか?

  • A) セキュリティチェックを本番環境で行う
  • B) セキュリティチェックを開発プロセスの早い段階で行う
  • C) セキュリティチェックをリリース後に行う
  • D) セキュリティチェックを手動で行う
<details> <summary>答えを見る</summary>

正解: B

シフトレフトとは、従来は開発プロセスの後半(右側)で行っていたセキュリティチェックを、 開発プロセスの前半(左側)に移動させる考え方です。

問題を早期に発見するほど修正コストは低く、 本番環境に脆弱性が到達するリスクも低減されます。

</details>

Q7. Pre-commitフックでセキュリティチェックを行う利点はどれですか?

  • A) CI/CDパイプラインが不要になる
  • B) コミット前にローカルで問題を検出し、脆弱なコードがリポジトリに入ることを防ぐ
  • C) テスト環境が不要になる
  • D) コードレビューが不要になる
<details> <summary>答えを見る</summary>

正解: B

Pre-commitフックは、git commit を実行する前にローカルでチェックを行い、 問題がある場合はコミットを阻止します。

これにより、脆弱なコードやシークレットがリポジトリに入ることを 最も早い段階で防ぐことができます。

ただし、CI/CDやコードレビューの代わりにはなりません。 Pre-commitはローカルでバイパスできるため、多層防御の1つとして位置づけます。

</details>

Q8. package-lock.json をGitにコミットすべき理由として正しいものはどれですか?

  • A) ファイルサイズが大きいため、CDNで配信するため
  • B) 全環境で同じバージョンの依存パッケージを保証し、再現性を確保するため
  • C) npm install の速度を向上させるため
  • D) package.json が不要になるため
<details> <summary>答えを見る</summary>

正解: B

package-lock.json は依存パッケージの正確なバージョンを記録しています。 これをコミットすることで、開発環境、CI、本番環境の全てで 同じバージョンのパッケージがインストールされることが保証されます。

セキュリティの観点では、テスト済みの安全なバージョンが 本番環境でも確実に使用されることを意味します。

</details>

結果

7問以上正解の場合

合格です。おめでとうございます。

Step 5「セキュリティツールを導入しよう」を完了しました。 次は Step 6「知識を確認しよう」に進みましょう。

6問以下の場合

もう少し復習しましょう。

問題復習セクション
Q1, Q2step5_1 SAST(静的解析)ツール
Q3step5_2 DAST(動的解析)の基本
Q4, Q5, Q8step5_3 依存パッケージの脆弱性管理
Q6, Q7step5_4 CI/CDにセキュリティチェックを組み込もう

Step 5 完了

お疲れさまでした。

学んだこと

  • SASTツール(ESLint, SonarQube, CodeQL)
  • DASTツール(OWASP ZAP, Burp Suite)
  • SCAツール(npm audit, Dependabot, Snyk)
  • CI/CDパイプラインへのセキュリティ組み込み

次のステップ

Step 6: 知識を確認しよう(1時間)

全ステップの知識を総合した最終試験に挑戦します。


推定所要時間: 15分