Play Framework のセキュリティに関する勧告

JavaScript ルーター XSS

日付

2016 年 6 月 22 日

記述

Play の JavaScript リバースルーターにクロスサイトスクリプティング (XSS) 脆弱性が見つかりました。これは、2.0.0 から 2.4.7 までのすべてのバージョンの Play に影響します。デフォルトでは、ホストは Host ヘッダーの値に設定され、生成された JavaScript ではエスケープされません。攻撃者は Host ヘッダーをスプーフィングできることが知られている脆弱性があるため、実際には反射型 XSS が発生する可能性があります。

影響

一部の環境では、キャッシュポイズニング攻撃などを通じてホストヘッダーをスプーフィングすることが攻撃者にとって可能です。このような場合、攻撃者は JavaScript を含む任意の文字列を挿入して、予期しないユーザーのマシンで実行することができます。

影響を受けるバージョン

Play 2.0.0 - 2.4.7

回避策

Routes.javaScriptRouter メソッドと JavaScriptReverseRouter.apply メソッドには、ホストを受け入れる別のバージョンもあります。このバージョンを明示的でサニタイズされたホストで使用して、攻撃者が攻撃を実行できないようにすることができます (例)。

@Html(play.api.routing.JavaScriptReverseRouter(
  name = "Router",
  ajaxMethod = Some("jQuery.ajax"),
  host = "example.com", // should either be constant or sanitized value
  routes.javascript.Users.list,
  routes.javascript.Application.index
).body.replace("/", "\\/"))

修正

Play 2.4.8 または 2.5.x にアップグレードします。

謝辞

この脆弱性を発見してくれた LinkedIn の Luca Carettoni と Detectify の Frans Rosén に感謝します。