OWASP ZAPでApp Exchangeのスキャンレポートを作成する

SalesforceのAppExchangeアプリをリリースするには、セキュリティレビューを通過する必要があります。そのプロセスの一環として、ソーススキャン(コードやシステムの脆弱性チェック)が求められます。
特に自社のSaaSと連携する場合、AppExchange用のコンポーネントだけでなく、自社SaaS側のソーススキャンも必須となります。
Salesforceではいくつかのスキャンツールが推奨されていますが、その中の一つであるChimeraを試したところ、申請後1ヶ月経ってもプロセスが進まず…。Salesforceサポートに問い合わせたところ、「Chimeraは他社でも苦労しているのでおすすめしない」との回答でした。
代わりにOWASP ZAPを推奨されたため、導入と設定を進めました。
今回は、M1 Mac環境でのOWASP ZAPの導入手順について、備忘録として残しておきます。
OWASP ZAPインストール
まずはZAPをインストールします。Homebrewを使うと簡単です。
brew install --cask owasp-zap
open /Applications/ZAP.app
ZAPがマルウェア判定されてしまう問題
最近のMacのセキュリティ機能により、ZAPがマルウェア判定されてしまい、そのままでは開けません。 (セキュリティリスクを伴う可能性があるため、自己責任で対応してください)

- システム設定 > プライバシーとセキュリティ に移動
- 「“ZAP.app”は開発元を確認できないため、開けません」と表示されたら、「許可」ボタンをクリック
- 一度開こうとしただけでは許可ボタンが表示されない場合、ZAPを開き直す
ZAPの設定(プロキシー設定)
ZAPを開いたら、プロキシーの設定を行います。
- セッションの保存方法を聞かれる → 「適当に一番上のオプションを選択」
- アドオン設定は閉じてOK
- プロキシーのポートを設定
- ZAP > Settings > Network > Local Servers / Proxies
- ポートを空いているものに設定
Firefoxでプロキシー設定
ブラウザのリクエストをZAPのproxyを通すようにすることでスキャンが実行されます。
Firefoxだと簡単にリクエストのproxy設定をできるので、Firefoxで進めます。
- Firefoxの設定 > ネットワーク設定 > 手動でプロキシー設定する
- ここでZAPのproxy設定と同じportを指定
- HTTPSでも使用する、にチェック
FirefoxにZAPの証明書を設定
ZAPのプロキシ経由でサイトにアクセスすると、証明書が信頼されていないためエラーが発生します。これを回避するため、ZAPの証明書をFirefoxに登録します。
- ZAPのServer Certificatesから証明書を保存
- Firefoxの設定 > プライバシーとセキュリティ > 証明書を表示
- 「認証局証明書」の項目で「読み込む」を選択し、ZAPの証明書を追加
- 「ウェブサイトの識別に使用する」にチェックを入れる
ZAPでレポート生成
証明書を設定したら、実際にスキャンを実行し、レポートを作成します。
- Firefoxでスキャン対象のサイトにアクセス
- ZAPのUI上で、サイトのURLがキャプチャされていることを確認
- ZAPのメニューから「レポートを生成」を選択
- スキャン対象のURLを指定してレポートを作成
レポート例とセキュリティレビューへの対応
ZAPのレポートでは、以下のようなセキュリティリスクが指摘されます。
• CSP(コンテンツセキュリティポリシー)の設定
• CORS(クロスオリジンリソース共有)の設定
• Cookieのセキュリティ設定
• その他の脆弱性情報

AppExchangeのセキュリティレビューに提出する前に、レポートのアラートを修正しておくことで、審査通過率を向上させることができます!
まとめ
SalesforceのChimeraはスキャンの進行が遅いため、OWASP ZAPを使うのが現実的な選択肢となります。
ZAPの導入自体は簡単ですが、Mac環境ではマルウェア判定の回避や証明書の設定が必要になるため、事前に準備しておきましょう。
AppExchangeのセキュリティレビューをスムーズに通過するためにも、事前の脆弱性スキャンを活用して、安全なアプリを提供しましょう 🚀