動作
最近、LXC-SMを搭載したアプリケーションに潜在的な脆弱性があることが確認されました。 LXC-SM(Liferay Cloud Self-Managed)をご利用のお客様において、URLパスの一部にエンコードされたピリオド文字(%2e)を含むURLを扱うと、リダイレクト脆弱性(ホストヘッダー攻撃)のように見える挙動が発生する場合があります。
例えば、 curl コマンドをエンコードされたURLで使用すると、異なるホストヘッダを渡すことができ、別のURLへのリダイレクトのように見えることがあります。
簡単に言うと、 curl コマンドを使用して、パスに ピリオド の文字がエンコードされているサイト(%2e)にアクセスする際に、 ホストヘッダー が指定されていると、リクエストが外部サイトにリダイレクト(302)される場合があります。 そのようなリクエストの例は、こちらでご覧いただけます:
curl 'https://<Application URL>/%2e' -H 'host: malicious-site.com'
分析
調査・検討の結果、この挙動はLiferay Cloudのお客様にとって脅威ではなく、実際には https://facebook.com/, https://twitter.com/, https://www.microsoft.com/のようなサイトでもごく普通に見られるという結論に至りました。
先ほど紹介したようなリクエストに対して期待される動作は、404エラーまたはベースURLに戻ることです。 代わりに、お客様は ホストヘッダ (-H) で指定されているサイトにリダイレクトされます。 調査の結果、リダイレクトはロードバランサーレベルで行われ、クラウドプロバイダーはLiferay Cloudのアプリケーション層に到達する前にリクエストとリダイレクトを処理することがわかりました。 これは、Liferay Cloudがクラウドプロバイダーのロードバランサーによってリクエストがどのように処理されるかを制御しないため、関連するものです。 本質的に、リダイレクトはログに残るかもしれませんが、この脆弱性が起こりうるために実際にリクエストが処理されることはありません。
前述のように、Facebook、Twitter、Microsoftなどのサイトは、 curl コマンドによるリクエストに対して、同じように振る舞います。 現在のブラウザには、Host Header攻撃に対する安全策が組み込まれているため、この攻撃手段は非常に限定的です。 つまり、ブラウザのリクエストは、提供されたURL内にあるものだけを処理することになり、この保護機能によりホストヘッダを偽造する機会は非常に限られています。