actionpack 6.0.4.2 → 6.0.4.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionpack might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d0922e2737ef8018658defe59245777e028d0e51257716db1ba1586c166756df
4
- data.tar.gz: 92c40c67a4914dc5e87aad14434ac3cff2a2a73782459b55a8984b8708a577b7
3
+ metadata.gz: c705c4b40454d414cc933856c706083ac953a933ebd5cc2659733a44a059eab9
4
+ data.tar.gz: 952b0ca0f709f485aacd9f52e36f4e2fe00dc7a728bde80c1ad4d9c73e5891eb
5
5
  SHA512:
6
- metadata.gz: 536f840999ed225ce831364206e19708fb49ad653181d8719d0c27cb349ccf8a7afc0028363d68f3a367b6ce953a799aa0c00e0f8e7250da6fa32e6b0da9ebb7
7
- data.tar.gz: 4896b9e8f50500b8b20c05bedd95cf5b51850c37ef6b9d7d815b408c8ac803f493b2bc6e8b30dceae5864165aea678f0b4b0c974b2fa83859761039bdf844ab6
6
+ metadata.gz: 148aae6042b0a53fbf2965816c887493643c0fdea905334f39e9a081b9bc9e7e6cc223a9a542e014cdff938044a982af9587c06903d31f31f38a37bbaed8762b
7
+ data.tar.gz: 942a986779a83202ce047a85ecd01845001f1ca85e92133b5ec48066e1fdd4dabdacc91716a00356236e3136c024aedec1c3160a246ede3e8c86fdb7e81c4ced
data/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ ## Rails 6.0.4.6 (February 11, 2022) ##
2
+
3
+ * No changes.
4
+
5
+
6
+ ## Rails 6.0.4.5 (February 11, 2022) ##
7
+
8
+ * Under certain circumstances, the middleware isn't informed that the
9
+ response body has been fully closed which result in request state not
10
+ being fully reset before the next request
11
+
12
+ [CVE-2022-23633]
13
+
14
+
15
+ ## Rails 6.0.4.4 (December 15, 2021) ##
16
+
17
+ * Fix issue with host protection not allowing host with port in development.
18
+
19
+
20
+ ## Rails 6.0.4.3 (December 14, 2021) ##
21
+
22
+ * Fix issue with host protection not allowing localhost in development.
23
+
24
+
1
25
  ## Rails 6.0.4.2 (December 14, 2021) ##
2
26
 
3
27
  * Fix X_FORWARDED_HOST protection. [CVE-2021-44528]
@@ -9,7 +9,7 @@ module ActionDispatch
9
9
  end
10
10
 
11
11
  def call(env)
12
- state = @executor.run!
12
+ state = @executor.run!(reset: true)
13
13
  begin
14
14
  response = @app.call(env)
15
15
  returned = response << ::Rack::BodyProxy.new(response.pop) { state.complete! }
@@ -10,6 +10,17 @@ module ActionDispatch
10
10
  # application will be executed and rendered. If no +response_app+ is given, a
11
11
  # default one will run, which responds with +403 Forbidden+.
12
12
  class HostAuthorization
13
+ ALLOWED_HOSTS_IN_DEVELOPMENT = [".localhost", IPAddr.new("0.0.0.0/0"), IPAddr.new("::/0")]
14
+ PORT_REGEX = /(?::\d+)/ # :nodoc:
15
+ IPV4_HOSTNAME = /(?<host>\d+\.\d+\.\d+\.\d+)#{PORT_REGEX}?/ # :nodoc:
16
+ IPV6_HOSTNAME = /(?<host>[a-f0-9]*:[a-f0-9.:]+)/i # :nodoc:
17
+ IPV6_HOSTNAME_WITH_PORT = /\[#{IPV6_HOSTNAME}\]#{PORT_REGEX}/i # :nodoc:
18
+ VALID_IP_HOSTNAME = Regexp.union( # :nodoc:
19
+ /\A#{IPV4_HOSTNAME}\z/,
20
+ /\A#{IPV6_HOSTNAME}\z/,
21
+ /\A#{IPV6_HOSTNAME_WITH_PORT}\z/,
22
+ )
23
+
13
24
  class Permissions # :nodoc:
14
25
  def initialize(hosts)
15
26
  @hosts = sanitize_hosts(hosts)
@@ -21,11 +32,17 @@ module ActionDispatch
21
32
 
22
33
  def allows?(host)
23
34
  @hosts.any? do |allowed|
24
- allowed === host
25
- rescue
26
- # IPAddr#=== raises an error if you give it a hostname instead of
27
- # IP. Treat similar errors as blocked access.
28
- false
35
+ if allowed.is_a?(IPAddr)
36
+ begin
37
+ allowed === extract_hostname(host)
38
+ rescue
39
+ # IPAddr#=== raises an error if you give it a hostname instead of
40
+ # IP. Treat similar errors as blocked access.
41
+ false
42
+ end
43
+ else
44
+ allowed === host
45
+ end
29
46
  end
30
47
  end
31
48
 
@@ -41,16 +58,20 @@ module ActionDispatch
41
58
  end
42
59
 
43
60
  def sanitize_regexp(host)
44
- /\A#{host}\z/
61
+ /\A#{host}#{PORT_REGEX}?\z/
45
62
  end
46
63
 
47
64
  def sanitize_string(host)
48
65
  if host.start_with?(".")
49
- /\A([a-z0-9-]+\.)?#{Regexp.escape(host[1..-1])}\z/i
66
+ /\A([a-z0-9-]+\.)?#{Regexp.escape(host[1..-1])}#{PORT_REGEX}?\z/i
50
67
  else
51
- /\A#{Regexp.escape host}\z/i
68
+ /\A#{Regexp.escape host}#{PORT_REGEX}?\z/i
52
69
  end
53
70
  end
71
+
72
+ def extract_hostname(host)
73
+ host.slice(VALID_IP_HOSTNAME, "host") || host
74
+ end
54
75
  end
55
76
 
56
77
  DEFAULT_RESPONSE_APP = -> env do
@@ -10,7 +10,7 @@ module ActionPack
10
10
  MAJOR = 6
11
11
  MINOR = 0
12
12
  TINY = 4
13
- PRE = "2"
13
+ PRE = "6"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.4.2
4
+ version: 6.0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-14 00:00:00.000000000 Z
11
+ date: 2022-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 6.0.4.2
19
+ version: 6.0.4.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 6.0.4.2
26
+ version: 6.0.4.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -98,28 +98,28 @@ dependencies:
98
98
  requirements:
99
99
  - - '='
100
100
  - !ruby/object:Gem::Version
101
- version: 6.0.4.2
101
+ version: 6.0.4.6
102
102
  type: :runtime
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
105
105
  requirements:
106
106
  - - '='
107
107
  - !ruby/object:Gem::Version
108
- version: 6.0.4.2
108
+ version: 6.0.4.6
109
109
  - !ruby/object:Gem::Dependency
110
110
  name: activemodel
111
111
  requirement: !ruby/object:Gem::Requirement
112
112
  requirements:
113
113
  - - '='
114
114
  - !ruby/object:Gem::Version
115
- version: 6.0.4.2
115
+ version: 6.0.4.6
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - '='
121
121
  - !ruby/object:Gem::Version
122
- version: 6.0.4.2
122
+ version: 6.0.4.6
123
123
  description: Web apps on Rails. Simple, battle-tested conventions for building and
124
124
  testing MVC web applications. Works with any Rack-compatible server.
125
125
  email: david@loudthinking.com
@@ -310,10 +310,10 @@ licenses:
310
310
  - MIT
311
311
  metadata:
312
312
  bug_tracker_uri: https://github.com/rails/rails/issues
313
- changelog_uri: https://github.com/rails/rails/blob/v6.0.4.2/actionpack/CHANGELOG.md
314
- documentation_uri: https://api.rubyonrails.org/v6.0.4.2/
313
+ changelog_uri: https://github.com/rails/rails/blob/v6.0.4.6/actionpack/CHANGELOG.md
314
+ documentation_uri: https://api.rubyonrails.org/v6.0.4.6/
315
315
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
316
- source_code_uri: https://github.com/rails/rails/tree/v6.0.4.2/actionpack
316
+ source_code_uri: https://github.com/rails/rails/tree/v6.0.4.6/actionpack
317
317
  post_install_message:
318
318
  rdoc_options: []
319
319
  require_paths:
@@ -330,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
330
330
  version: '0'
331
331
  requirements:
332
332
  - none
333
- rubygems_version: 3.2.15
333
+ rubygems_version: 3.2.22
334
334
  signing_key:
335
335
  specification_version: 4
336
336
  summary: Web-flow and rendering framework putting the VC in MVC (part of Rails).