3

昨日重大なセキュリティエラーが公開され、任意のコードを実行できるようになりました:RailsPoCがCVE-2013-0156およびCVE-2013-0155を悪用

Railsプロジェクトを3.1.1から最新バージョン3.2.11に更新したい

gemfileに次の行があります。

gem 'rails', '3.1.1'
# ...
group :assets do
  gem 'sass-rails',   '~> 3.1.4'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

Railsのバージョンを変更して実行しましたbundle update

Fetching source index for http://rubygems.org/
Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    rails (= 3.2.11) x86-mingw32 depends on
      railties (= 3.2.11) x86-mingw32

    coffee-rails (~> 3.1.1) x86-mingw32 depends on
      railties (3.1.10)

Bundler could not find compatible versions for gem "actionpack":
  In Gemfile:
    rails (= 3.2.11) x86-mingw32 depends on
      actionpack (= 3.2.11) x86-mingw32

    meta_search (>= 1.1.0.pre) x86-mingw32 depends on
      actionpack (3.1.0.beta1)

bundle update railsコマンドで更新することすらできません。

Railsを更新する正しい方法は何ですか?gemfileのrailsバージョンを更新して実行すると、 /etcバージョンbundleでエラーが発生します。 このファイルにはどのバージョンを入れる必要がありますか?この情報はどこにありますか?sass-rails
sass-railscoffee-rails

PS「〜>」とはどういう意味ですか?

4

2 に答える 2

3

安全なバージョンは 3.2.11 だけではありません。セキュリティ修正を含む他の gem も公開されました: 3.1.10、3.0.19、および 2.3.15。

の 3.1 への依存関係から、sass-rails既に 3.1.10 を使用していたようですね?

3.1.10 を使用するか、3.2 バージョンにアップグレードすることができますがsass-railscoffee-railsRails 3.2 用にアプリを更新する必要もあります。あなたの場合、少なくとも最初にセキュリティ修正を取得するために、3.1.10 を使用します。

また、あなたは について尋ねました~>。これは基本的に、同じメジャー バージョンとマイナー バージョンを持ち、指定した以上のポイント リリースを持つ gem の最新バージョンを意味します-> 3.1.1。つまり、最新の 3.1.x ですが、3.2 バージョンではありません。

rails 3.2 を使用するように指示したため、bundler エラーが発生していましたsass-railsが、3.1 を使用するように指示していました。そんな矛盾した指示をされたらバンドラーはどうしたらいいのかわからない。

于 2013-01-10T16:44:42.380 に答える
2

なんらかの理由で Rails のバージョンを直接更新できない場合は、一時的なパッチを に挿入することもできますconfig/initializers

こちらをご覧ください:
https://groups.google.com/forum/#!topic/rubyonrails-security/61bkgvnSGTQ/discussion

上記の Rails 3.x の投稿から、これらを実行する必要があります。

# Disable XML
ActionDispatch::ParamsParser::DEFAULT_PARSERS.delete(Mime::XML) 

# Disable YAML and Symbol parsing
ActionDispatch::ParamsParser::DEFAULT_PARSERS.delete(Mime::YAML) 
ActiveSupport::XmlMini::PARSING.delete("symbol") 
ActiveSupport::XmlMini::PARSING.delete("yaml") 
于 2013-01-10T16:35:31.647 に答える