From 65cab02bc954a04b5095cee5dd7f8aa02266001a Mon Sep 17 00:00:00 2001 From: zouzhimin Date: Tue, 2 Apr 2024 02:22:53 +0800 Subject: [PATCH] Fix CVE-2022-44570 --- Fix-CVE-2022-44570.patch | 44 ++++++++++++++++++++++++++++++++++++++++ rubygem-rack.spec | 9 +++++++- 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 Fix-CVE-2022-44570.patch diff --git a/Fix-CVE-2022-44570.patch b/Fix-CVE-2022-44570.patch new file mode 100644 index 0000000..f05f1cf --- /dev/null +++ b/Fix-CVE-2022-44570.patch @@ -0,0 +1,44 @@ +From f6d4f528f2df1318a6612845db0b59adc7fe8fc1 Mon Sep 17 00:00:00 2001 +From: Aaron Patterson +Date: Tue, 17 Jan 2023 12:04:37 -0800 +Subject: [PATCH] Fix ReDoS in Rack::Utils.get_byte_ranges + +This commit fixes a ReDoS problem in `get_byte_ranges`. Thanks +@ooooooo_q for the patch! + +[CVE-2022-44570] +--- + lib/rack/utils.rb | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/lib/rack/utils.rb b/lib/rack/utils.rb +index 34849ded..14d9e17d 100644 +--- a/lib/rack/utils.rb ++++ b/lib/rack/utils.rb +@@ -348,17 +348,18 @@ module Rack + return nil unless http_range && http_range =~ /bytes=([^;]+)/ + ranges = [] + $1.split(/,\s*/).each do |range_spec| +- return nil unless range_spec =~ /(\d*)-(\d*)/ +- r0, r1 = $1, $2 +- if r0.empty? +- return nil if r1.empty? ++ return nil unless range_spec.include?('-') ++ range = range_spec.split('-') ++ r0, r1 = range[0], range[1] ++ if r0.nil? || r0.empty? ++ return nil if r1.nil? + # suffix-byte-range-spec, represents trailing suffix of file + r0 = size - r1.to_i + r0 = 0 if r0 < 0 + r1 = size - 1 + else + r0 = r0.to_i +- if r1.empty? ++ if r1.nil? + r1 = size - 1 + else + r1 = r1.to_i +-- +2.25.1 + diff --git a/rubygem-rack.spec b/rubygem-rack.spec index 1ef8660..3450eec 100644 --- a/rubygem-rack.spec +++ b/rubygem-rack.spec @@ -4,7 +4,7 @@ Name: rubygem-%{gem_name} Version: 2.2.4 Epoch: 1 -Release: 4 +Release: 5 Summary: A modular Ruby webserver interface License: MIT and BSD URL: https://rack.github.io/ @@ -14,6 +14,7 @@ Patch1: 2-2-header-redos.patch Patch2: Fix-CVE-2024-26141.patch Patch3: Fix-CVE-2024-26146.patch Patch4: Fix-CVE-2024-25126.patch +Patch5: Fix-CVE-2022-44570.patch BuildRequires: ruby(release) rubygems-devel ruby >= 2.2.2 BuildRequires: memcached rubygem(memcache-client) rubygem(minitest) BuildRequires: rubygem(memcache-client) @@ -102,6 +103,12 @@ popd %doc %{gem_instdir}/contrib %changelog +* Wed Apr 03 2024 zouzhimin - 1:2.2.4-5 +- Type:CVES +- ID:CVE-2022-44570 +- SUG:NA +- DESC:CVE-2022-44570 + * Tue Apr 02 2024 zouzhimin - 1:2.2.4-4 - Type:CVES - ID:CVE-2024-25126 -- Gitee