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, phpseclibNetSSH2::get_binary_packet() uses PHPs != 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.
Two separate operations in a product require different amounts of time to complete, in a way that is observable to an actor and reveals security-relevant information about the state of the product, such as whether a particular operation was successful or not.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Phpseclib | Phpseclib | * | 1.0.27 (including) |
| Phpseclib | Phpseclib | 2.0.0 (including) | 2.0.53 (excluding) |
| Phpseclib | Phpseclib | 3.0.0 (including) | 3.0.51 (excluding) |
| Php-phpseclib | Ubuntu | esm-apps/xenial | * |
| Php-phpseclib | Ubuntu | questing | * |
| Php-phpseclib | Ubuntu | upstream | * |
| Php-phpseclib3 | Ubuntu | questing | * |
| Php-phpseclib3 | Ubuntu | upstream | * |
| Phpseclib | Ubuntu | esm-apps/xenial | * |
| Phpseclib | Ubuntu | questing | * |