Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Rails: セキュリティアップデート5.2.4.4と6.0.3.3がリリース

ruby-jp Slackの#security板で知り、つい先ほど公式情報も出ました。

詳しくは上のrubysec/ruby-advisory-dbまたは公式情報をご覧ください。

HTML安全でない文字列が、見つからない訳文キー(htmlという名前、または_htmlで終わる名前)のデフォルトとして渡されると、デフォルトの文字列が誤ってHTML安全とマークされ、エスケープされない。
脆弱なコードは以下の例のようになっている可能性がある。
同コミットより大意

<%# welcome_html 訳文が現在のロケールで定義されてない %>
<%= t("welcome_html", default: untrusted_user_controlled_string) %>

<%# title.html 訳文と missing.html 訳文がいずれも現在のロケールで定義されていない %>
<%= t("title.html", default: [:"missing.html", untrusted_user_controlled_string]) %>

修正されたバージョンは以下のとおりです。

  • “~> 5.2.4, >= 5.2.4.4”
  • “>= 6.0.3.3”

api: translate — ActionView::Helpers::TranslationHelper

事情により該当バージョンにアップデートできない場合は、以下のようにデフォルトの訳文をhtml_escape(エイリアスはh)で明示的にエスケープすることで回避できるとのことです。

<%= t("welcome_html", default: h(untrusted_user_controlled_string)) %>

api: html_escape — ERB::Util


オレオレRailsアプリも更新しました↓。

$ bundle exec rails s
=> Booting Puma
=> Rails 5.2.4.4 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 4.3.6 (ruby 2.7.1-p83), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
* Listening on tcp://[::1]:3000
Use Ctrl-C to stop

関連記事

RailsビューのHTMLエスケープは#link_toなどのヘルパーメソッドで解除されることがある


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。