🐯

Web Security Scanner で Cloud Run をスキャンしてみた

2024/06/10に公開

はじめに

こんにちは、クラウドエース SRE 部に所属している\textcolor{red}{赤髪}がトレードマークの Shanks です。

みなさんは Google Cloud のセキュリティオペレーション統合サービスである Security Command Center (以下、SCC)を利用していますか?
今日はその中でも「Web Security Scanner」について深堀りしていきます。

Web Security Scanner とは

WSS 概要

Web Security Scanner(以下、WSS)とは、Google Cloud でホストしている WEB アプリケーションの脆弱性診断を行う機能です。
現在対応しているサービスは以下の3つで、公開 URL と IP のみをサポートしています。

  • App Engine
  • Google Kubernetes Engine
  • Compute Engine

Cloud Run での課題

上述のとおり、現在 WSS では Cloud Run をサポートしていません。
しかし、Cloud Run は WEB アプリケーションをホストするフルマネージドプラットフォームとして代表的なサービスです。

将来的に WSS が Cloud Run をサポートするか否かは現在公開していませんが、弊社でも多くの要望や相談をいただいております。
WSS 以外では、OWASP ZAPMetasploit といったツールを利用することで代用できるケースもありますが、利用のハードルがあがる場合もあります。

実際、Cloud Run のエンドポイントである run.app ドメインのエンドポイントを WSS の検出対象に設定しても拒否されてしまいます。

ただし、Cloud Run は Serverless NEG によりロードバランサ経由でアクセスすることが可能です。
これを逆手にとり、ロードバランサをエンドポイントにすれば WSS の対象にできるのではないかと考え検証を行いました。

Cloud Run をスキャンする

アーキテクチャ

arch

本件では、意図的に脆弱性を検知させるために OWASP Juice Shop を利用しました。
OWASP Juice Shop とは、OWASP が提供しているハニーポットです。
OWASP Top 10 と呼ばれる重大な脆弱性の TOP 10 を含んでいるため、セキュリティの学習教材としても有用です。

補足

本件では、サンプルアプリケーションとして OWASP Juice Shop を利用したのですが、脆弱性スキャン実行によりアプリの内部エラーが多発しました。
デフォルトの設定では、HTTP ステータス エラーが多発すると、WSS の脆弱性スキャンが途中で終了してしまうという挙動があります。
そのため、本記事を参考にして OWASP Juice Shop を利用する方は、WSS の詳細設定として「HTTP ステータス エラーを無視」のチェックを忘れずに入れてください。

検出対象パス

  • /#/
  • /#/login
  • /#/search
  • /#/basket
  • /#/address/select
  • /#/payment/shop
  • /#/order-summary
  • /#/score-board
  • /#/order-history
  • /#/wallet
  • /#/recycle
  • /#/address/saved
  • /#/saved-payment-methods
  • /#/privacy-security/privacy-policy
  • /#/privacy-security/data-export
  • /dataerasure
  • /#/privacy-security/change-password
  • /#/privacy-security/two-factor-authentication
  • /#/privacy-security/last-login-ip
  • /profile

結果

result
結果として、WSS で XSS(クロスサイトスクリプティング)が正しく検出されていることを確認しました。
ロードバランサのエンドポイントに対し WSS の脆弱性スキャンが正しく行われていることがわかります。

まとめ

Cloud Run 単体ではサポートしていない脆弱性スキャンですが、このように一工夫することで対応することができます。
Cloud Run で WSS を利用した脆弱性スキャンを行う方法の1つとして検討してみてはいかがでしょうか。

おまけ:機能リクエスト

IsuueTracker

機能リクエストとして、WSS の Cloud Run サポートに関する Issue Tracker が公開されています。
ページ右上の「+1」を押すことで意思を表明することができ、この反応が多ければ対応が早まる可能性があります。
共感いただけた方は是非「+1」をお願いします。

スペシャルサンクス

本記事での検証については、同じ SRE 部所属の阿部と小田が行ったものを記事化しております。
また、問題提起をし本記事を執筆するキッカケとなった黒田も含め、3名共に技術ブログを執筆していますのでこの機会に是非ご一読ください。

Discussion