Package: release.debian.org Severity: normal Tags: trixie X-Debbugs-Cc: [email protected] Control: affects -1 + src:phpseclib User: [email protected] Usertags: pu
[ This bug report is similar to #1134372 for php-seclib3 ] I’d like to get CVE-2026-40194 fixed in an upcoming point release. This is a variable-time comparison tagged as no-dsa. The change is pretty trivial. [ 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 Regards, taffit
diff -Nru phpseclib-1.0.23/debian/changelog phpseclib-1.0.23/debian/changelog --- phpseclib-1.0.23/debian/changelog 2026-03-24 08:55:43.000000000 +0100 +++ phpseclib-1.0.23/debian/changelog 2026-04-19 11:36:32.000000000 +0200 @@ -1,7 +1,15 @@ +phpseclib (1.0.23-6+deb13u2) trixie; urgency=medium + + * Fix bug number in previous changelog entry + * SSH2: use constant time string comparison in get_binary_packet() + [CVE-2026-40194] + + -- David Prévot <[email protected]> Sun, 19 Apr 2026 11:36:32 +0200 + phpseclib (1.0.23-6+deb13u1) trixie-security; urgency=medium * Track trixie branch - * make unpadding constant time [CVE-2026-32935] (Closes: #1131485) + * make unpadding constant time [CVE-2026-32935] (Closes: #1131484) -- David Prévot <[email protected]> Tue, 24 Mar 2026 08:55:43 +0100 diff -Nru phpseclib-1.0.23/debian/patches/0014-SSH2-use-constant-time-string-comparison-in-get_bina.patch phpseclib-1.0.23/debian/patches/0014-SSH2-use-constant-time-string-comparison-in-get_bina.patch --- phpseclib-1.0.23/debian/patches/0014-SSH2-use-constant-time-string-comparison-in-get_bina.patch 1970-01-01 01:00:00.000000000 +0100 +++ phpseclib-1.0.23/debian/patches/0014-SSH2-use-constant-time-string-comparison-in-get_bina.patch 2026-04-19 11:36:17.000000000 +0200 @@ -0,0 +1,58 @@ +From: terrafrost <[email protected]> +Date: Thu, 9 Apr 2026 18:14:19 -0500 +Subject: SSH2: use constant time string comparison in get_binary_packet(): + +Origin: backport, https://github.com/phpseclib/phpseclib/commit/ffe48b6b1b1af6963327f0a5330e3aa004a194ac +Bug: https://github.com/phpseclib/phpseclib/security/advisories/GHSA-r854-jrxh-36qx +Bug-Debian: https://security-tracker.debian.org/tracker/CVE-2026-40194 +--- + phpseclib/Net/SSH2.php | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +diff --git a/phpseclib/Net/SSH2.php b/phpseclib/Net/SSH2.php +index f9fffc3..908614f 100644 +--- a/phpseclib/Net/SSH2.php ++++ b/phpseclib/Net/SSH2.php +@@ -3721,7 +3721,7 @@ class Net_SSH2 + $this->bitmap = 0; + user_error('Error reading socket'); + return false; +- } elseif ($hmac != $this->hmac_check->hash(pack('NNCa*', $this->get_seq_no, $packet_length, $padding_length, $payload . $padding))) { ++ } elseif (!$this->_equals($hmac, $this->hmac_check->hash(pack('NNCa*', $this->get_seq_no, $packet_length, $padding_length, $payload . $padding)))) { + user_error('Invalid HMAC'); + return false; + } +@@ -5527,4 +5527,33 @@ class Net_SSH2 + { + $this->smartMFA = false; + } ++ ++ /** ++ * Constant time equality testing ++ * ++ * Pretty much copy / pasted from Crypt/RSA.php ++ * ++ * @access private ++ * @param string $x ++ * @param string $y ++ * @return bool ++ */ ++ function _equals($x, $y) ++ { ++ if (function_exists('hash_equals')) { ++ return hash_equals($x, $y); ++ } ++ ++ if (strlen($x) != strlen($y)) { ++ return false; ++ } ++ ++ $result = "\0"; ++ $x^= $y; ++ for ($i = 0; $i < strlen($x); $i++) { ++ $result|= $x[$i]; ++ } ++ ++ return $result === "\0"; ++ } + } diff -Nru phpseclib-1.0.23/debian/patches/series phpseclib-1.0.23/debian/patches/series --- phpseclib-1.0.23/debian/patches/series 2026-03-24 08:55:43.000000000 +0100 +++ phpseclib-1.0.23/debian/patches/series 2026-04-19 11:36:17.000000000 +0200 @@ -11,3 +11,4 @@ 0011-Group-nophpunit11-for-tests-failing-with-PHPUnit-11.patch 0012-Modernize-PHPUnit-syntax.patch 0013-make-unpadding-constant-time.patch +0014-SSH2-use-constant-time-string-comparison-in-get_bina.patch
signature.asc
Description: PGP signature

