Description
phpseclib is a PHP secure communications library. Starting in 0.1.1 and prior to 3.0.51, 2.0.53, and 1.0.28, phpseclib\Net\SSH2::get_binary_packet() uses PHP's != operator to compare a received SSH packet HMAC against the locally computed HMAC. != on equal-length binary strings in PHP uses memcmp(), which short-circuits on the first differing byte. This is a real variable-time comparison (CWE-208), proven by scaling benchmarks. This vulnerability is fixed in 3.0.51, 2.0.53, and 1.0.28.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
phpseclib phpseclib
>= 0.1.1, < 1.0.28affected>= 2.0.0, < 2.0.53affected>= 3.0.0, < 3.0.51affected
References
- https://github.com/phpseclib/phpseclib/security/advisories/GHSA-r854-jrxh-36qx ↗
- https://github.com/phpseclib/phpseclib/commit/ffe48b6b1b1af6963327f0a5330e3aa004a194ac ↗
- https://github.com/phpseclib/phpseclib/releases/tag/1.0.28 ↗
- https://github.com/phpseclib/phpseclib/releases/tag/2.0.53 ↗
- https://github.com/phpseclib/phpseclib/releases/tag/3.0.51 ↗