CASAのTier2のセキュリティ評価を静的スキャンで完了させた備忘録
はじめに
Google の制限付きスコープに該当する API を使用するために、この記事で言及するセキュリティ評価というものを受ける必要がありました。
Google の制限付きスコープに該当する API の OAuth 検証の体験談は以下の記事で紹介しています。
実績
現状Tier2のセキュリティ評価を2度経験しています。
- 2023年7月
- 2023年12月
4 ~ 5ヶ月ほどしか経っていないのですが、審査を通すまでの手順が若干変化していました。
対象読者
- Tier2 のセキュリティ評価を受ける必要のある方
- Google の制限付きスコープに該当する API を使用予定の方
セキュリティ評価が必要な理由
制限付きスコープに該当する GoogleAPI を使用する場合は、年に 1 回セキュリティ評価を受ける必要があります。
Google の OAuth 検証の最終段階としてセキュリティ評価を受けるようにメールで通達されました。
For final approval, you are required to complete a Tier 2 verified self security assessment and be issued a Letter of Validation for your application by your due date {1 October, 2023}. This assessment is required annually and applies to all apps requesting restricted scopes. To learn more, please visit the CASA website.
CASA(Cloud Application Security Accessment)の web ページを参考に約 3 ヶ月以内にセキュリティ評価を完了させるように指示を受けました。
The due date is to complete your assessment and receive a Letter of Validation. It can take up to 6 weeks to complete the CASA assessment, so it is important to initiate your assessment as early as possible.
最大 6 週間かかるから早めに始めたほうが良いという忠告も。
どうしたらセキュリティ評価を通過できるのか
以下の Tier2 のセキュリティ評価には以下の 3 つのプロセスがあり、全てを完了させる必要があります。
- Initial Review
- Detailed Review
- Final QA and Completion
これらのプロセスはCASA ポータルというサイトを使って進めていきます。
審査の流れ
審査フローイメージ図
Initial Review
- Fortifyスキャン or 静的スキャン or 動的スキャンにてセキュリティの脆弱性のチェック。スキャン結果の提出
- 初回アンケートの提出
Detailed Review
Initial Review の内容を深掘りされるようです。
僕たちは特に何の質問ややり取りもなく、Detailed Review を通過しました。
Initial Reviewで提出したアンケートの情報の不備などを確認されるくらいのイメージです。
セキュリティ的に問題ありと回答してしまうと、評価担当者ともう少し細かなやり取りが発生する可能性があります。
Final QA and Completion
最終確認の段階です。
何か確認事項があれば聞かれるのかもしれませんが、こちらも何のやり取りもなく通過しました。
アプリのスキャンについて
(現在は古くなっているため参考になりません↓)
~~ スキャンガイドに従い、~~
- 静的スキャン
- 動的スキャン
- カスタムスキャン
のどれかを選択します。
静的スキャン、動的スキャンが CASA の推奨ツールだったようなので、僕たちは静的スキャンを選択しました。
注意
※こちらの公式ドキュメントっぽいものは古くなっているため、CASAポータルで示されている内容が最新かと思います。
2023年12月現在ではFortifyスキャンというものが推奨のスキャン方法となっています。
2023年12月時点では、参考画像のようにサポート言語が限られています。
僕たちが審査を通したものはFlutter(Dart)プロジェクトであったため、以前推奨されていた静的スキャンで審査を進めることができるように評価担当者に連絡をしました。
動的スキャンを使用している参考記事
静的スキャンの具体的な手順
Fluid Attacks というオープンソース CLI を使用し、アプリのソースコードを自動でスキャンすることで、セキュリティの脆弱性がある箇所を指摘してもらえます。
基本的には以下の静的スキャンのガイドに沿って進めれば OK です。
※2023年12月時点では以下の記事の情報は古くなっているため参考になりません。
代わりに以下を参考にすると良いです。
僕が対応した当時は手順通りにやってもエラーになり、以下のGithubのissueを参考に解消しました。
手順一覧
- config.yamlを作成し、プロジェクトの直下に配置
- 静的スキャン結果の CSV ファイルの出力
consfig.yamlの作成
参考までにconfig.yaml
の中身を載せておきます。
必要に応じて中身を修正してください。
# 参考: https://docs.fluidattacks.com/tech/scanner/standalone/casa/
# 分析対象のリポジトリ名。名前は任意。
namespace: hogehoge
# EN(英語)と ES(スペイン語)の2言語がサポートされています(2023/11月時点)
language: EN
# 静的スキャン(tatic Application Security Testing)を有効にする。
# サポートされている言語のソースコードをチェックできる
sast:
# スキャンしたいファイル、フォルダの指定
include:
- .
# スキャン結果の出力に関する設定
output:
file_path: ./Fluid-Attacks-Results.csv
format: CSV
# checksを指定しない場合は、全検証項目のスキャンになります。
# 公式的にchecksを指定しないことが推奨されています。
# checks:
# - F001
# - F004
静的スキャン結果の CSV ファイルの出力
審査対象プロジェクトのルートディレクトリにて
1. Docker イメージをプルしてくる
# <arch>には、amd64 or arm64が入ります
docker pull ghcr.io/fluidattacks/makes/<arch>:latest
Intel製のMacはamd64,Apple Silicon製のMacはarm64になるかと思います。
2. スキャン結果の出力
# <arch>には、amd64 or arm64が入ります
# --privilegedはgithubのissueを参考に付与しています。
docker run --privileged -v .:/working-dir ghcr.io/fluidattacks/makes/<arch>:latest m gitlab:fluidattacks/universe@trunk /skims scan ./config.yaml
以下のようなログが出ていれば成功です。
[INFO] An output file has been written: /usr/scan/Fluid-Attacks-Results.csv
[INFO] Summary: No vulnerabilities were found in your targets.
───────────────────────────────── 🎯 Success! ──────────────────────────────────
上記のコマンド実行後には<project>/SAST-Results.csv
が生成されます。
具体的に指摘された項目
2023 年時点の静的スキャンでは以下の 2 点を指摘されました。
- AndroidManifest ファイルの allowBackup に false を指定する必要がある。(参考)
-
Firebase Emulator Suiteで起動する local 環境用 の
google-services.json
に(ダミーの)apiKey が含まれてしまっている。(実在しない環境のものなのでコミットしていましたが、指摘を受けました。)
上記の 2 点を修正後に、セキュリティの脆弱性が 0 の状態で 、CASA のポータルサイトからSAST-Results.csv
を提出しました。
追記
別件対応時はAndroidManifestファイル内にてusesCleartextTraffic
を明示的にfalseに指定していないことを指摘されました。
android:usesCleartextTraffic="false"
参考
最後に
セキュリティ評価の前の Google による OAuth 検証はとても厳しいものでしたが、Tier2 のセキュリティ評価は 2 ~ 3 週間ほどで完了できるものでした。
最大 6 週間かかると脅されていたのでほっとひと安心でした。
この記事がどなたかの参考になれば幸いです。
(Fortifyスキャンも経験せねば..)
Twitter では Flutter を中心とする技術関連の情報を発信しています!
セキュリティ評価の対応など、お仕事の依頼は以下のメールアドレスまでご連絡をよろしくお願いします。
mark.saito@jp-gx.com
Discussion
手順参考になりました!ありがとうございます!
提示されていたドキュメント内からCASAポータルのURLが見つからなかったのですが、出自はどこになりますか?
GoogleからのメールにはOAuthのFAQリンクがあり、
上記からCASAサイトの案内があり、 上記の手順内でCASA Tier 2 verification portalに提出する流れまでは確認できたのですが、肝心のポータルサイトにたどり着けず、この記事以外でURLを発見できませんでした
どこかに記載があったりしましたか?
Googleからのセキュリティ評価の依頼メールの中にURLが添付してありました。
Register
orlogin
の部分ですポータルサイトのURLはこちらでした
ありがとうございます!
私に来たメールでは上記部分のリンクがありませんでした…
Googleから提示されているのであれば問題なさそうですね
fluidattacksのドキュメントを見に行くと、App DefenseAllianceの内容が古いと書かれていたりと、いろいろ不安に感じる部分もあったりします…
Googleから提示されないケースもあるんですね..
App DefenseAllianceの内容は確かに古いかもですね。。
fluidattacksもセキュリティ評価を行った当時の最新バージョンをしたら動きましたが、記事そのままのバージョンではエラーになっていたりしました..
(↓こちらのセクションに軽くコメント残してはいます)
手順ありがとうございました。おかげさまでスキャンできました。
Googleからもらったメールで記載されているポータルサイトでFortifyスキャンを用いてソースコードのスキャンもう一度やるんですか?
静的スキャン一度やったから、もう一度やると心配してきたので質問させていただきました。
こちらの内容がよく理解できませんが、僕の場合はこの記事で説明した手順がGoogleからの要件を満たしていました。
Googleからの指示通りに行っていただくのが良いかと思います。
Fortifyスキャン
については僕の場合はGoogle側から特に何も言及されていませんでした最新だと以下の対応が必要かもですね
手順ありがとうございました。
スキャンを試みたが、いつも以下のエラーが出る。
[ERROR] Enter a valid argument, the argument types are the path to a .yaml configuration file or the path to a directory.
.yamlファイルをプロジェクトディレクトリに保存しました。
プロジェクトディレクトリは以下の通りです。
scan_artifact
├── <My-app>
│ ── ── <Android>
│ ├── ────config.yaml
├── Dockerfile
config.yamlの配置場所が違うかもですね。
最新のやり方だとDockerfileを使うやり方でなく、gcrのDockerイメージを使う方法が最新かもです。
2023/12/27
公式っぽいドキュメントが古くなっていたため、最新情報を盛り込んだ形に修正しておきました
以下は古くなっており参考になりません
わかりやすくまとめていただいて大変参考になりました。
一つ質問なのですが、CASA tier2を受けるにあたってなにか費用は発生しますか?また、tier3の場合や毎年審査を受ける際になにか費用が発生するかご存知でしたら教えていただけないでしょうか。
Tier2の審査では費用は発生しないです
Tier3の場合は第三者期間によるセキュリティ評価を行う必要があるのでかかったような気がします...Tier3のセキュリティ評価は経験していないので明確なことは言えませんが^^;
手順のシェアありがとうございました。直近ですが、CASAポータルから新規での申請ができなくなってしまったようです。Google側で CASA セキュリティ評価を取得する方法を更新したらしく、2024/05/09 現在Tier2の審査でも$540~ (ex. TAC Security) の費用が必要そうです。
同様の事象の報告
現在のCASAポータルで新規ログイン後の画面
o_tsuboさん、ご共有ありがとうございます!
数ヶ月毎にセキュリティ評価の仕様が変わっているので、なかなかキャッチアップも大変ですね..
次回審査時の参考にさせていただきます!
また新しい審査を経験したタイミングで記事も更新できればと考えております 🙇