rack 2.1.4 → 2.1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/lib/rack/common_logger.rb +3 -0
- data/lib/rack/lint.rb +1 -1
- data/lib/rack/multipart/parser.rb +2 -1
- data/lib/rack/multipart.rb +3 -4
- data/lib/rack/utils.rb +6 -5
- data/lib/rack.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: edbcf6126aae323681d2fdc8e61fbbc036661d3354419ac07a389499c9f2f04a
|
|
4
|
+
data.tar.gz: a1071b44bbf6fa93a58ad2739f9df6f9450666c18aa94e7c69b8e813f3c290a4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 555cbd0c544abc9102e68450e0e2f7a1a6a758adac673087562419bd85073b5d4130c6446349a1efb68f0cd13ae94863eb083d3e528ec12d6c9e0d71c7047dd1
|
|
7
|
+
data.tar.gz: 6028521bbb96e209dde73311e30e614f680359ded81465bb23723a45ada328c661104a7487bf5cebc238831504a4e5f370a763769a4dd50d7df1b524da27c24d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
## [2.1.4.2] - 2022-01-17
|
|
2
|
+
|
|
3
|
+
- [CVE-2022-44571] Fix ReDoS vulnerability in multipart parser
|
|
4
|
+
- [CVE-2022-44570] Fix ReDoS in Rack::Utils.get_byte_ranges
|
|
5
|
+
- [CVE-2022-44572] Forbid control characters in attributes (also ReDoS)
|
|
6
|
+
|
|
7
|
+
## [2.1.4.1] - 2022-05-27
|
|
8
|
+
|
|
9
|
+
- [CVE-2022-30123] Fix shell escaping issue in Common Logger
|
|
10
|
+
- [CVE-2022-30122] Restrict parsing of broken MIME attachments
|
|
11
|
+
|
|
1
12
|
## [2.1.4] - 2020-06-15
|
|
2
13
|
|
|
3
14
|
- [CVE-2020-8184] When parsing cookies, only decode the value
|
data/lib/rack/common_logger.rb
CHANGED
|
@@ -55,7 +55,10 @@ module Rack
|
|
|
55
55
|
length,
|
|
56
56
|
Utils.clock_time - began_at ]
|
|
57
57
|
|
|
58
|
+
msg.gsub!(/[^[:print:]\n]/) { |c| "\\x#{c.ord}" }
|
|
59
|
+
|
|
58
60
|
logger = @logger || env[RACK_ERRORS]
|
|
61
|
+
|
|
59
62
|
# Standard library logger doesn't support write but it supports << which actually
|
|
60
63
|
# calls to write on the log device without formatting
|
|
61
64
|
if logger.respond_to?(:write)
|
data/lib/rack/lint.rb
CHANGED
|
@@ -296,7 +296,7 @@ module Rack
|
|
|
296
296
|
check_hijack env
|
|
297
297
|
|
|
298
298
|
## * The <tt>REQUEST_METHOD</tt> must be a valid token.
|
|
299
|
-
assert("REQUEST_METHOD unknown: #{env[REQUEST_METHOD]}") {
|
|
299
|
+
assert("REQUEST_METHOD unknown: #{env[REQUEST_METHOD].dump}") {
|
|
300
300
|
env[REQUEST_METHOD] =~ /\A[0-9A-Za-z!\#$%&'*+.^_`|~-]+\z/
|
|
301
301
|
}
|
|
302
302
|
|
|
@@ -309,8 +309,9 @@ module Rack
|
|
|
309
309
|
elsif filename = params['filename*']
|
|
310
310
|
encoding, _, filename = filename.split("'", 3)
|
|
311
311
|
end
|
|
312
|
-
when
|
|
312
|
+
when BROKEN
|
|
313
313
|
filename = $1
|
|
314
|
+
filename = $1 if filename =~ /^"(.*)"$/
|
|
314
315
|
end
|
|
315
316
|
|
|
316
317
|
return unless filename
|
data/lib/rack/multipart.rb
CHANGED
|
@@ -16,13 +16,12 @@ module Rack
|
|
|
16
16
|
TOKEN = /[^\s()<>,;:\\"\/\[\]?=]+/
|
|
17
17
|
CONDISP = /Content-Disposition:\s*#{TOKEN}\s*/i
|
|
18
18
|
VALUE = /"(?:\\"|[^"])*"|#{TOKEN}/
|
|
19
|
-
|
|
20
|
-
BROKEN_UNQUOTED = /^#{CONDISP}.*;\s*filename=(#{TOKEN})/i
|
|
19
|
+
BROKEN = /^#{CONDISP}.*;\s*filename=(#{VALUE})/i
|
|
21
20
|
MULTIPART_CONTENT_TYPE = /Content-Type: (.*)#{EOL}/ni
|
|
22
|
-
MULTIPART_CONTENT_DISPOSITION = /Content-Disposition
|
|
21
|
+
MULTIPART_CONTENT_DISPOSITION = /Content-Disposition:[^:]*;\s*name=(#{VALUE})/ni
|
|
23
22
|
MULTIPART_CONTENT_ID = /Content-ID:\s*([^#{EOL}]*)/ni
|
|
24
23
|
# Updated definitions from RFC 2231
|
|
25
|
-
ATTRIBUTE_CHAR = %r{[^ \
|
|
24
|
+
ATTRIBUTE_CHAR = %r{[^ \x00-\x1f\x7f)(><@,;:\\"/\[\]?='*%]}
|
|
26
25
|
ATTRIBUTE = /#{ATTRIBUTE_CHAR}+/
|
|
27
26
|
SECTION = /\*[0-9]+/
|
|
28
27
|
REGULAR_PARAMETER_NAME = /#{ATTRIBUTE}#{SECTION}?/
|
data/lib/rack/utils.rb
CHANGED
|
@@ -350,17 +350,18 @@ module Rack
|
|
|
350
350
|
return nil unless http_range && http_range =~ /bytes=([^;]+)/
|
|
351
351
|
ranges = []
|
|
352
352
|
$1.split(/,\s*/).each do |range_spec|
|
|
353
|
-
return nil
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
353
|
+
return nil unless range_spec.include?('-')
|
|
354
|
+
range = range_spec.split('-')
|
|
355
|
+
r0, r1 = range[0], range[1]
|
|
356
|
+
if r0.nil? || r0.empty?
|
|
357
|
+
return nil if r1.nil?
|
|
357
358
|
# suffix-byte-range-spec, represents trailing suffix of file
|
|
358
359
|
r0 = size - r1.to_i
|
|
359
360
|
r0 = 0 if r0 < 0
|
|
360
361
|
r1 = size - 1
|
|
361
362
|
else
|
|
362
363
|
r0 = r0.to_i
|
|
363
|
-
if r1.
|
|
364
|
+
if r1.nil?
|
|
364
365
|
r1 = size - 1
|
|
365
366
|
else
|
|
366
367
|
r1 = r1.to_i
|
data/lib/rack.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rack
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.4
|
|
4
|
+
version: 2.1.4.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Leah Neukirchen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-01-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: minitest
|
|
@@ -185,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
185
185
|
- !ruby/object:Gem::Version
|
|
186
186
|
version: '0'
|
|
187
187
|
requirements: []
|
|
188
|
-
rubygems_version: 3.
|
|
188
|
+
rubygems_version: 3.1.6
|
|
189
189
|
signing_key:
|
|
190
190
|
specification_version: 4
|
|
191
191
|
summary: a modular Ruby webserver interface
|