CASA Tier2 セルフアセスメントをクリアした話

# 背景
#### GoolgeAPIを使用するには、CASA Requirementsをクリアする必要がある。
弊社SaaSではGoolgeAPIを使用している為、毎年Googleの指定する認証をクリアしてきた。
2022年の10月15日からTier制度になったらしく、今回が初めてのセルフチェック。
加えて、認証期限まで1か月ほどのスケジュールで実施することになったので、かなりタイト。

ちなみに、私はIPAのセキュリティスペシャリスト資格を保有していますが、セキュリティアセスメントは初めて行う、名ばかりスペシャリストです。ネットワーク系の問題は試験にもたくさん出てましたが、ソフトウェア系はほとんど試験に出なかったので、初耳なことばかりで非常に勉強になりました。

# CASA Frameworkとは
- Tier2はセルフアセスメント
- Tier3は指定の第三者機関によるアセスメント
- Tier3が一番厳しい審査

CASA Requirements
https://lookerstudio.google.com/u/0/reporting/757d8fab-9682-4b74-9acc-58efb5e3081c/page/p_ana6axxq4c?s=s409T062qEA

#### CASA Tier2 のセルフアセスメントについて記載します
- セルフアセスメントには2種類ある
  https://circleci.com/ja/blog/sast-vs-dast-when-to-use-them/
    - SAST
        - ソースコードチェック 
        - 代表的な検査ツールは fluid attacks
          https://fluidattacks.com/
    - DAST
        - 実行中アプリケーションチェック
        - 代表的な検査ツールは OWASP ZAP
          https://www.zaproxy.org/
- 目的が違うため、本来は両方行うべきだが、どちらかだけでもCASAの審査は通る。
- fluid attacksはソースコードチェックの為、Githubとの連携が必要。
- OWASP ZAPは稼働中のアプリ調査となる為、他の準備は不要。
- 最終的にはCI/CDに組み込んでスキャンを自動化することが目標。
- 今回は準備の手間の少ないOWASP ZAPを使用した。

# OWASP ZAP の事前準備
- OWASP ZAPのインストール
    - docker版もあるが、ローカルにインストールも可能(Win版、Mac版、Linux版あり)
    - Win版のインストール方法はこちら
        https://cybersecurity-jp.com/column/67851
- OWASP ZAPの使い方
    - OWASP ZAPを起動する
        ![2023-06-08_08h50_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/7f2a30c1-c57a-d496-da7a-d64c9e8bd7f5.png)
    - セッションの保持方法
        ![2023-06-08_08h50_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/33a5cde1-5b83-02e9-c26d-75cc2981d283.png)

    - OWASP ZAPのオプション設定
      ![2023-06-08_09h58_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/ae257c98-56b4-ca50-7971-e0c84c4dbe0c.png)
      ![2023-06-08_09h58_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/74e66a47-4b75-fb04-2cba-c64fa118058d.png)

    - Firefoxのプロキシ設定
      ![2023-06-08_09h59_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/8f1b7e70-66a6-6632-3e45-65f7ca6d0e68.png)
      ![2023-06-08_10h03_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/ad57bfef-0ad3-2099-7dae-23643525da0c.png)
      ![2023-06-08_10h04_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/126bd1bc-a704-92ad-44b6-09d08b7625eb.png)


# OWASP ZAPの使い方詳細
- モードを標準モードにする
      ![2023-06-08_09h50_47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/74fb3a15-ca91-630a-ded8-86895913637e.png)
    - ブラウザマーク(Firefox)を押してブラウザを起動する
      ![2023-06-08_09h51_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/dc6e53c9-a04b-2fe5-727e-1ae595c1edca.png)
    - 検査対象のURLを入力します
      ※絶対に他社サイトを攻撃しないように！
      ![2023-06-08_09h51_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/e2db5a5c-5f1e-b466-b2cf-d986bbf7ac58.png)

    - 以下の画面が表示されるので、「Continue to your target」をクリック
      ![2023-06-08_09h54_29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/df6f71f8-4765-f360-9946-5004facdd228.png)
    - OWASP ZAPに戻ると、「サイト」にURLが表示されるようになります。
    - モードをプロテクトモードに変更します。
      ![2023-06-08_10h13_57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/017ac38a-3e87-df10-2219-24e79649b3d8.png)

    - 対象のURLを右クリックし、「コンテキストに含める」にします。
        - 既にコンテキストに設定を入れている場合は既存のものを選択してください。
          ![2023-06-08_10h16_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/3508457e-f5cb-541e-a868-3808d76e3eb3.png)

    - 画面左上の◎ボタンをクリックすることで、コンテキストに含めたサイトだけが検査対象となります。
      ![2023-06-08_10h20_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/e265f9d0-ebe4-494c-4a51-af768da033be.png)

    - プロテクトモードであること、検査対象が限定されていることを確認してから「攻撃」-「動的スキャン」を実行します。
      ![2023-06-08_10h22_50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/5edf461e-1f9a-967a-ba84-c9882b7764fc.png)

    - 検査が終わったら、レポートを作成します。別のURLが検査対象に入った場合でも、レポートする範囲をスコープで絞ることが可能です。
      ![2023-06-08_10h23_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/04eb9da8-f2e9-dee9-9e56-ae5f1bac5592.png)
      ![2023-06-08_10h24_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/b51cf180-0b9a-0d91-26d1-9e17f2529613.png)

    - 「Templete」からXMLを選択して「Generate Report」を実行します。
      ![2023-06-08_10h25_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/1d423219-1127-7119-1603-f370a2e557a9.png)

以上が基本的な使い方の流れとなります。


# OWASP ZAPの使い方で困ったところ、悩んだ点
- 思うように結果をコントロールできない
    - プロテクトモードで対象を絞っていても他社サイトにも診断に行くところが不可解だった
    - 結果として、コンテキストに登録することとプロテクトモードにするだけではダメで、画面左上の◎ボタンを有効にすることが必要だった。プロテクトモードにしているのだから連動して欲しいところ。
      ![2023-06-08_10h20_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359386/bf3cf62c-c3fe-af78-5d21-fa61c430ff49.png)

- 自社サイトに限定した後も、googletagmanagerが、CWE-829 Cross-Domain JavaScript Source File Inclusion にひっかかってしまう。
    - これは自社での対処方法が見つからず。
    - しかし、認証機関からは脆弱性が検出されない完全なレポートでないと認証できないとのこと。
    - 最終的にXMLファイルをテキスト編集して提出　→　認証完了となった。

最期にもやもやが残りましたが、次回以降に向けたノウハウを習得できました。
どなたかのお役に立てば幸いです。