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(/''/, '":'.freeze) end content_tag(:div, "hi", title: escape_quotes(sanitize(user_input)))