diff --git a/backport-CVE-2023-49285.patch b/backport-CVE-2023-49285.patch new file mode 100644 index 0000000..578693c --- /dev/null +++ b/backport-CVE-2023-49285.patch @@ -0,0 +1,34 @@ +From deee944f9a12c9fd399ce52f3e2526bb573a9470 Mon Sep 17 00:00:00 2001 +From: Alex Rousskov +Date: Wed, 25 Oct 2023 19:41:45 +0000 +Subject: [PATCH] RFC 1123: Fix date parsing (#1538) + +The bug was discovered and detailed by Joshua Rogers at +https://megamansec.github.io/Squid-Security-Audit/datetime-overflow.html +where it was filed as "1-Byte Buffer OverRead in RFC 1123 date/time +Handling". + +Conflict:NA +Reference:https://github.com/squid-cache/squid/commit/deee944f9a12c9fd399ce52f3e2526bb573a9470 +--- + src/time/rfc1123.cc | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/src/time/rfc1123.cc b/src/time/rfc1123.cc +index d89d22262f6..7524959edb0 100644 +--- a/src/time/rfc1123.cc ++++ b/src/time/rfc1123.cc +@@ -50,7 +50,13 @@ make_month(const char *s) + char month[3]; + + month[0] = xtoupper(*s); ++ if (!month[0]) ++ return -1; // protects *(s + 1) below ++ + month[1] = xtolower(*(s + 1)); ++ if (!month[1]) ++ return -1; // protects *(s + 2) below ++ + month[2] = xtolower(*(s + 2)); + + for (i = 0; i < 12; i++) diff --git a/backport-CVE-2023-49286.patch b/backport-CVE-2023-49286.patch new file mode 100644 index 0000000..386cd12 --- /dev/null +++ b/backport-CVE-2023-49286.patch @@ -0,0 +1,85 @@ +From 6014c6648a2a54a4ecb7f952ea1163e0798f9264 Mon Sep 17 00:00:00 2001 +From: Alex Rousskov +Date: Fri, 27 Oct 2023 21:27:20 +0000 +Subject: [PATCH] Exit without asserting when helper process startup fails + (#1543) + +... to dup() after fork() and before execvp(). + +Assertions are for handling program logic errors. Helper initialization +code already handled system call errors correctly (i.e. by exiting the +newly created helper process with an error), except for a couple of +assert()s that could be triggered by dup(2) failures. + +This bug was discovered and detailed by Joshua Rogers at +https://megamansec.github.io/Squid-Security-Audit/ipc-assert.html +where it was filed as 'Assertion in Squid "Helper" Process Creator'. + +Conflict:NA +Reference:https://github.com/squid-cache/squid/commit/6014c6648a2a54a4ecb7f952ea1163e0798f9264 +--- + src/ipc.cc | 32 ++++++++++++++++++++++++++------ + 1 file changed, 26 insertions(+), 6 deletions(-) + +diff --git a/src/ipc.cc b/src/ipc.cc +index 40d34b4755a..1afc4d5cf3c 100644 +--- a/src/ipc.cc ++++ b/src/ipc.cc +@@ -22,6 +22,11 @@ + + #include + #include ++#include ++ ++#if HAVE_UNISTD_H ++#include ++#endif + + static const char *hello_string = "hi there\n"; + #ifndef HELLO_BUF_SZ +@@ -362,6 +367,22 @@ ipcCreate(int type, const char *prog, const char *const args[], const char *name + } + + PutEnvironment(); ++ ++ // A dup(2) wrapper that reports and exits the process on errors. The ++ // exiting logic is only suitable for this child process context. ++ const auto dupOrExit = [prog,name](const int oldFd) { ++ const auto newFd = dup(oldFd); ++ if (newFd < 0) { ++ const auto savedErrno = errno; ++ debugs(54, DBG_CRITICAL, "ERROR: Helper process initialization failure: " << name << ++ Debug::Extra << "helper (CHILD) PID: " << getpid() << ++ Debug::Extra << "helper program name: " << prog << ++ Debug::Extra << "dup(2) system call error for FD " << oldFd << ": " << xstrerr(savedErrno)); ++ _exit(EXIT_FAILURE); ++ } ++ return newFd; ++ }; ++ + /* + * This double-dup stuff avoids problems when one of + * crfd, cwfd, or debug_log are in the rage 0-2. +@@ -369,17 +390,16 @@ ipcCreate(int type, const char *prog, const char *const args[], const char *name + + do { + /* First make sure 0-2 is occupied by something. Gets cleaned up later */ +- x = dup(crfd); +- assert(x > -1); +- } while (x < 3 && x > -1); ++ x = dupOrExit(crfd); ++ } while (x < 3); + + close(x); + +- t1 = dup(crfd); ++ t1 = dupOrExit(crfd); + +- t2 = dup(cwfd); ++ t2 = dupOrExit(cwfd); + +- t3 = dup(fileno(debug_log)); ++ t3 = dupOrExit(fileno(debug_log)); + + assert(t1 > 2 && t2 > 2 && t3 > 2); + diff --git a/squid.spec b/squid.spec index 18055dc..9111ab0 100644 --- a/squid.spec +++ b/squid.spec @@ -2,7 +2,7 @@ Name: squid Version: 6.1 -Release: 3 +Release: 4 Summary: The Squid proxy caching server Epoch: 7 License: GPLv2+ and (LGPLv2+ and MIT and BSD and Public Domain) @@ -27,6 +27,8 @@ Patch6: backport-CVE-2023-46846.patch Patch7: backport-CVE-2023-46847.patch Patch8: backport-CVE-2023-46848.patch Patch9: backport-CVE-2023-46724.patch +Patch10: backport-CVE-2023-49285.patch +Patch11: backport-CVE-2023-49286.patch Requires: bash Requires: httpd-filesystem @@ -249,6 +251,12 @@ fi chgrp squid /var/cache/samba/winbindd_privileged >/dev/null 2>&1 || : %changelog +* Tue Dec 05 2023 yanglu - 7:6.1-4 +- Type:cves +- ID:CVE-2023-49285 CVE-2023-49286 +- SUG:NA +- DESC:fix CVE-2023-49285 CVE-2023-49286 + * Thu Nov 02 2023 yanglu - 7:6.1-3 - Type:CVE - ID:CVE-2023-46724