[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1034713: marked as done (bullseye-pu: package php-guzzlehttp-psr7/1.7.0-1+deb11u2)



Your message dated Sat, 07 Oct 2023 12:41:28 +0100
with message-id <84bb5ff8312f749ebe536897993782bf35aa1977.camel@adam-barratt.org.uk>
and subject line Closing opu requests for updates included in 11.8
has caused the Debian Bug report #1034713,
regarding bullseye-pu: package php-guzzlehttp-psr7/1.7.0-1+deb11u2
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1034713: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1034713
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: bullseye
User: release.debian.org@packages.debian.org
Usertags: pu
X-Debbugs-Cc: php-guzzlehttp-psr7@packages.debian.org, team@security.debian.org
Control: affects -1 + src:php-guzzlehttp-psr7

Hi,

[ Reason ]
I’d like to fix an improper input validation [CVE-2023-29197]
filed as #1034581. This is a follow up from [CVE-2022-24775]
filed as #1008236 that was fixed via a previous point release.
The security team filed those bugs with a non-RC severity, so
I assume they don’t expect to release a DSA for it (as for the
previous main issue), anyway the team is X-D-Cc.

[ Impact ]
It’a security flaw.

[ Tests ]
The (extended for this fix) upstream testsuite is run at build
time and debci.

[ Risks ]
The code change is fairly trivial, and was cherry-picked from
upstream (their fix for the 1.9 branch).

[ Checklist ]
  [x] *all* changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in (old)stable
  [x] the issue is verified as fixed in unstable

[ Changes ]
It’s just a stricter validation regex.

[ Other info ]
Thanks a lot for your work!

Cheers

taffit
diff --git a/debian/changelog b/debian/changelog
index 8635876..0093037 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+php-guzzlehttp-psr7 (1.7.0-1+deb11u2) bullseye; urgency=medium
+
+  * Fix improper input validation [CVE-2023-29197] (Closes: #1034581)
+
+ -- David Prévot <taffit@debian.org>  Sat, 22 Apr 2023 11:41:36 +0200
+
 php-guzzlehttp-psr7 (1.7.0-1+deb11u1) bullseye; urgency=medium
 
   * Track Bullseye
diff --git a/debian/patches/0004-Patch-header-validation-issue.patch b/debian/patches/0004-Patch-header-validation-issue.patch
new file mode 100644
index 0000000..84b4ad9
--- /dev/null
+++ b/debian/patches/0004-Patch-header-validation-issue.patch
@@ -0,0 +1,87 @@
+From: Graham Campbell <hello@gjcampbell.co.uk>
+Date: Mon, 17 Apr 2023 16:33:27 +0100
+Subject: Patch header validation issue
+
+Origin: upstream, https://github.com/guzzle/psr7/commit/18fd8915823bd9ca4156e84849e18970057dc7e4
+Bug-Debian: https://bugs.debian.org/1034581 https://security-tracker.debian.org/tracker/CVE-2023-29197
+---
+ src/MessageTrait.php   | 13 ++++++-------
+ tests/RequestTest.php  |  5 +++++
+ tests/ResponseTest.php |  9 +++++++++
+ 3 files changed, 20 insertions(+), 7 deletions(-)
+
+diff --git a/src/MessageTrait.php b/src/MessageTrait.php
+index 0ac8663..0bbd63e 100644
+--- a/src/MessageTrait.php
++++ b/src/MessageTrait.php
+@@ -226,12 +226,9 @@ trait MessageTrait
+             throw new \InvalidArgumentException('Header name can not be empty.');
+         }
+ 
+-        if (! preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/', $header)) {
++        if (! preg_match('/^[a-zA-Z0-9\'`#$%&*+.^_|~!-]+$/D', $header)) {
+             throw new \InvalidArgumentException(
+-                sprintf(
+-                    '"%s" is not valid header name',
+-                    $header
+-                )
++                sprintf('"%s" is not valid header name.', $header)
+             );
+         }
+     }
+@@ -263,8 +260,10 @@ trait MessageTrait
+         // Clients must not send a request with line folding and a server sending folded headers is
+         // likely very rare. Line folding is a fairly obscure feature of HTTP/1.1 and thus not accepting
+         // folding is not likely to break any legitimate use case.
+-        if (! preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/', $value)) {
+-            throw new \InvalidArgumentException(sprintf('"%s" is not valid header value', $value));
++        if (! preg_match('/^[\x20\x09\x21-\x7E\x80-\xFF]*$/D', $value)) {
++            throw new \InvalidArgumentException(
++                sprintf('"%s" is not valid header value.', $value)
++            );
+         }
+     }
+ }
+diff --git a/tests/RequestTest.php b/tests/RequestTest.php
+index 10ac92a..7dca806 100644
+--- a/tests/RequestTest.php
++++ b/tests/RequestTest.php
+@@ -269,6 +269,10 @@ class RequestTest extends BaseTest
+             // Line folding is technically allowed, but deprecated.
+             // We don't support it.
+             ["new\r\n line"],
++            ["newline\n"],
++            ["\nnewline"],
++            ["newline\r\n"],
++            ["\r\nnewline"],
+         ];
+ 
+         for ($i = 0; $i <= 0xff; $i++) {
+@@ -286,6 +290,7 @@ class RequestTest extends BaseTest
+             }
+ 
+             $tests[] = ["foo" . \chr($i) . "bar"];
++            $tests[] = ["foo" . \chr($i)];
+         }
+ 
+         return $tests;
+diff --git a/tests/ResponseTest.php b/tests/ResponseTest.php
+index 0b6be02..30e106b 100644
+--- a/tests/ResponseTest.php
++++ b/tests/ResponseTest.php
+@@ -284,6 +284,15 @@ class ResponseTest extends BaseTest
+             [[], 'foo', 'Header name must be a string but array provided.'],
+             [false, 'foo', 'Header name must be a string but boolean provided.'],
+             [new \stdClass(), 'foo', 'Header name must be a string but stdClass provided.'],
++            ["", 'foo', "Header name can not be empty."],
++            ["Content-Type\r\n\r\n", 'foo', "\"Content-Type\r\n\r\n\" is not valid header name."],
++            ["Content-Type\r\n", 'foo', "\"Content-Type\r\n\" is not valid header name."],
++            ["Content-Type\n", 'foo', "\"Content-Type\n\" is not valid header name."],
++            ["\r\nContent-Type", 'foo', "\"\r\nContent-Type\" is not valid header name."],
++            ["\nContent-Type", 'foo', "\"\nContent-Type\" is not valid header name."],
++            ["\n", 'foo', "\"\n\" is not valid header name."],
++            ["\r\n", 'foo', "\"\r\n\" is not valid header name."],
++            ["\t", 'foo', "\"\t\" is not valid header name."],
+         ]);
+     }
+ 
diff --git a/debian/patches/series b/debian/patches/series
index 3301656..af8456e 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
 0002-Fixed-bad-test-355.patch
 0002-Release-1.8.4-486.patch
 0003-Release-1.8.5-491.patch
+0004-Patch-header-validation-issue.patch

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 11.8

Hi,

The updates referred to by each of these requests were included in
today's 11.8 bullseye point release.

Regards,

Adam

--- End Message ---

Reply to: