CVE-2016-6316 RailsのAction ViewにおけるXSS脆弱性 を日本語訳してみた

パッチリリースログの日本語訳に挑戦してみる。

[CVE-2016-6316] Possible XSS Vulnerability in Action View - Google グループ
https://groups.google.com/forum/#!topic/ruby-security-ann/8B2iV2tPRSE

Action Viewで可能なXSS脆弱性がありました。

HTML safeとして宣言されたテキストをタグヘルパーの属性値として使った時に、クオートがエスケープされていませんでした。

再現するバージョン: 3.0.0 以上
再現しないバージョン: 3.0.0 未満
修正後のバージョン: 5.0.0.1, 4.2.7.1, 3.2.22.3

脆弱性を持つコードは次の通り:

content_tag(:div, "hi", title: user_input.html_safe)

sanitizeのようにヘルパーに文字列をHTML safeとするヘルパーでは、コードは次のようにもなります:

content_tag(:div, "hi", title: sanitize(user_input))

影響のあるリリースを使用している全てのユーザはすぐにアップグレードするか一時的な回避を行ってください。

一時的な回避

ユーザの入力をsafeとしないように設定するか、手動でクオートをエスケープ処理することで回避できます。具体的には以下の通り:

def escape_quotes(value)
  value.gsub(/''/, '&quot:'.freeze)
end

content_tag(:div, "hi", title: escape_quotes(sanitize(user_input)))