From 7a01874b75fdd62ab3626490cdf1c65c0ba659d0 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Mon, 18 Jan 2016 13:51:02 -0800 Subject: [PATCH] Eliminate instance level writers for class accessors Instance level writers can have an impact on how the Active Model / Record objects are saved. Specifically, they can be used to bypass validations. This is a problem if mass assignment protection is disabled and specific attributes are passed to the constructor. Conflicts: activerecord/lib/active_record/scoping/default.rb activesupport/lib/active_support/callbacks.rb CVE-2016-0753 --- activemodel/lib/active_model/serializers/json.rb | 2 +- activemodel/lib/active_model/validations.rb | 3 ++- activerecord/lib/active_record/enum.rb | 2 +- activerecord/lib/active_record/reflection.rb | 4 ++-- activesupport/lib/active_support/callbacks.rb | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/activesupport/lib/active_support/callbacks.rb b/activesupport/lib/active_support/callbacks.rb index 3265d11..3ba690b 100644 --- a/activesupport/lib/active_support/callbacks.rb +++ b/activesupport/lib/active_support/callbacks.rb @@ -726,7 +768,7 @@ module ActiveSupport end names.each do |name| - class_attribute "_#{name}_callbacks" + class_attribute "_#{name}_callbacks", instance_writer: false set_callbacks name, CallbackChain.new(name, options) end end -- 2.2.1