2022/12/09

テクノロジー

脆弱性診断の内製化に向けて準備したこと

この記事の目次

    はじめに

    私の所属するサイバーセキュリティ課では、マイナビグループの事業発展をサイバーセキュリティで支えるべく、日々業務に励んでいます。

    サイバーセキュリティに関することは何でもやる!という部署で、主に以下のような業務に取り組んでいます。

    • セキュリティモニタリング
    • セキュリティエンジニアリング
    • セキュリティポリシーや制度の立案・運用
    • システム企画、設計のレビュー
    • システム実装、運用の支援
    • インシデントハンドリング
    • サイバーセキュリティに関する情報収集と提供
    • セキュリティ教育、訓練

    現在、私は脆弱性関連を担当しており、脆弱性診断の内製化に取り組んでいます。
    本記事では、脆弱性診断の内製化(内製診断)にあたり準備したことをまとめました。

    なぜ内製化?

    マイナビでは、規模の異なる多数のWebサイトを管理しています。
    定期的な脆弱性診断を実施するにも、すべてを外部業者に依頼するには、時間もコストもかかりすぎてしまいます。
    そこで、一部Webサイトでの脆弱性診断を内製化することで、タイムリーかつコストパフォーマンスよく実施できると考えました。

    準備すること

    1. 診断方法やツールを選定する
    2. 診断すべき脆弱性項目を一覧化する
    3. 脆弱性の評価基準を決定する
    4. ユーザーからの申請方法を決定する

    1. 診断方法やツールを選定する

    どのように診断を行なうのかを決めます。
    ツールを用いた自動診断だけなのか、手動診断も行なうのか、ツールは何を使うのか・・などです。
    診断ツールは、無償で利用できるものもあります。「OWASP ZAP」や「Burp Suite」が有名です。

    OWASP ZAPを試してみる

    OWASP ZAPは、オープンソースの脆弱性診断ツールです。
    ナレッジが多く、導入が簡単なため、まずはこちらを試してみることにしました。

    ソフトウェアのインストール

    以下のソフトウェアをインストールします。

    • OWASP ZAP
    • Java
    • Firefox(診断時に利用するブラウザ)

    各種設定

    OWASP ZAPのローカルプロキシ機能を設定します。
    OWASP ZAPを起動し、歯車マークからローカルプロキシの設定を開きます。
    デフォルトでは localhost:8080 となっていますが、必要に応じて変更します。

    診断時に利用するブラウザを開き、OWASP ZAPのローカルプロキシの値を設定します。
    Firefoxの場合は「FoxyProxy Standard」という拡張機能が便利です。

    スキャン実行

    ※第三者のWebサイトに、勝手に脆弱性診断を行うと攻撃とみなされます。診断を行なう際は、自身で管理しているWebサイトに限ってください。

    プロキシを設定したブラウザ(Firefox)から診断対象にアクセスすると、OWASP ZAPの左ペインにWebサイトのURLが追加されます。

    OWASP ZAPには、4つのモードがあります。
    「攻撃モード」「標準モード」は、対象外のWebサイトへも診断を行なってしまう可能性があるため、「プロテクトモード」でのスキャン実行がおすすめです。「セーフモード」ではスキャンが行なえません。
    「プロテクトモード」では、診断対象をコンテキストに含めることでスキャンが可能になります。

    診断対象のURLを右クリックし、「攻撃」を選択するとスキャンが実行されます。
    スキャンは、「スパイダー」と「動的スキャン」の2つがあります。

    • スパイダー
      • 診断対象に存在するURLを洗い出し、レスポンスの内容などを検査します
    • 動的スキャン
      • リクエストパラメータを変えるなどして検査をします

    レポート生成

    メニューバーの「レポート」から診断結果を生成することができます。
    HTMLやPDFなど形式を選択できます。

    2. 診断すべき脆弱性項目を一覧化する

    IPAや脆弱性診断士スキルマッププロジェクトなどで、一覧化された脆弱性項目が公開されています。
    マイナビでは、 OWASP ASVSなどを参考に策定したセキュリティチェックシートが存在するため、これらを掛け合わせて診断すべき項目を一覧化しました。
    実際に診断を行なう際は、対象サイトの仕様に応じて診断すべき項目を精査します。

    3. 脆弱性の評価基準を決定する

    発見された脆弱性が、どの程度影響のあるものなのかを評価するための基準を決めます。
    高・中・低・情報レベルで分けることが多いかと思います。
    マイナビでは単に脆弱性自体の危険性だけでなく、SSVCを用いて実際の影響度を考慮し判断することにしました。
    SSVCは、判断ポイントがわかりやすく、ユーザーにも説明がしやすいという点で採用しました。

    SSVCとは?

    脆弱性を対応する基準として、多くの場合はCVSSのベーススコアや深刻度を用いますが、
    これは「脆弱性自体の危険性」を表しており、対応の優先順位付けを行なうには情報が不十分です。
    実際の影響度は、システムが置かれている環境や扱っている情報の重要度により変わってきます。

    SSVCは、この問題を解決するために考案された脆弱性管理のフレームワークです。
    以下の4つの情報をインプットとして、4段階の対応レベルを導出します。

    • 情報
      • 攻撃コードの公開有無と悪用レベル
      • 攻撃者にとっての有用性
      • システムの露出レベル
      • 攻撃された際の業務影響
    • 対応レベル
      • Immediate
        • 全てのリソースを集中し必要に応じて組織の通常業務を停止して可能な限り迅速に対応する
      • Out-of-Cycle
        • 通常よりも迅速に行動し、計画外の機会に緩和策または修復策を実施する
      • Scheduled
        • 定期メンテナンス時に対応する
      • Defer
        • 現時点では対応しない

    4. ユーザーからの申請方法を決定する

    内製診断を実施したいユーザーからの受付窓口が必要です。
    ヒアリングも兼ねて、以下のような項目を入力するフォームを用意しました。

    • 部署名・氏名
    • サイト名・サイトURL
    • サイトの仕様
      • プラットフォーム、OS、開発言語、構成など
    • 診断実施希望日
    • リリース予定日
      • いつまでに診断を完了する必要があるか確認するためです
    • 注意事項の確認
      • 診断実施にあたり注意事項のページを別途用意しました

    まとめ

    今回は、内製診断をスモールスタートするために準備したことをまとめてみました。
    ここに記載したツールの利用方法や評価基準だけでなく、脆弱性に対する理解は必須です。
    ユーザーに安心してWebサイトを利用してもらえるように、抜け漏れなくしっかりと診断を実施していきたいと思います。

    サイバーセキュリティ課では、様々な施策に取り組んでいます。
    脆弱性診断に限らず、さまざまなセキュリティ知識を身に着けるべく自身のスキルアップにも努めてまいります。💪

    最後まで読んでいただきありがとうございました!

    ※本記事は2022年12月時点の情報です。

    著者:マイナビエンジニアブログ編集部