diff --git a/CVE-2024-39316.patch b/CVE-2024-39316.patch new file mode 100644 index 0000000000000000000000000000000000000000..cfd0d9d79aba61c2591ae8a16dfe609c1a40c106 --- /dev/null +++ b/CVE-2024-39316.patch @@ -0,0 +1,53 @@ +From 412c980450ca729ee37f90a2661f166a9665e058 Mon Sep 17 00:00:00 2001 +From: Dwi Siswanto +Date: Tue, 2 Jul 2024 11:29:28 +0700 +Subject: [PATCH] Merge pull request from GHSA-cj83-2ww7-mvq7 + +* fix: ReDoS in the `parse_http_accept_header` method + +Signed-off-by: Dwi Siswanto + +* fix: optimize HTTP Accept headers parsing + +by: + +* updated `parse_http_accept_header` method to + avoid unnecessary array allocation from `map`. +* used `strip!` to modify strings in place, + avoiding additional string allocations. +* plus, safe navigation for `parameters` to + handle nil cases. + +this improves memory efficiency in header parsing. + +Co-authored-by: Jeremy Evans +Signed-off-by: Dwi Siswanto + +--------- + +Signed-off-by: Dwi Siswanto +Co-authored-by: Jeremy Evans +--- + lib/rack/request.rb | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/lib/rack/request.rb b/lib/rack/request.rb +index b880b6ec..ccbd07da 100644 +--- a/lib/rack/request.rb ++++ b/lib/rack/request.rb +@@ -642,8 +642,10 @@ module Rack + end + + def parse_http_accept_header(header) +- header.to_s.split(/\s*,\s*/).map do |part| +- attribute, parameters = part.split(/\s*;\s*/, 2) ++ header.to_s.split(',').map do |part| ++ attribute, parameters = part.split(';', 2) ++ attribute.strip! ++ parameters&.strip! + quality = 1.0 + if parameters and /\Aq=([\d.]+)/ =~ parameters + quality = $1.to_f +-- +2.43.0.windows.1 + diff --git a/rubygem-rack.spec b/rubygem-rack.spec index 9e40b05707debbb9bcb3c9a2225bd5ed3ddc84f4..b8dc9abff03df120ca715ce9734fa7616561552f 100644 --- a/rubygem-rack.spec +++ b/rubygem-rack.spec @@ -3,11 +3,14 @@ Name: rubygem-%{gem_name} Version: 2.2.3.1 Epoch: 1 -Release: 1 +Release: 2 Summary: A modular Ruby webserver interface License: MIT and BSD URL: https://rack.github.io/ Source0: https://rubygems.org/downloads/%{gem_name}-%{version}.gem + +Patch0: CVE-2024-39316.patch + BuildRequires: ruby(release) rubygems-devel ruby >= 2.2.2 memcached BuildArch: noarch @@ -32,7 +35,7 @@ BuildArch: noarch Documentation for %{name}. %prep -%setup -q -n %{gem_name}-%{version} +%autosetup -n %{gem_name}-%{version} -p1 -S git %build gem build ../%{gem_name}-%{version}.gemspec @@ -90,6 +93,9 @@ popd %doc %{gem_instdir}/contrib %changelog +* Fri Jul 5 2024 liningjie - 1:2.2.3.1-2 +- Fix CVE-2024-39316 + * Tue Jun 28 2022 wangkai - 1:2.2.3.1-1 - Upgrade to 2.2.3.1 for fix CVE-2020-8184 CVE-2022-30122 CVE-2022-30123