製品・ソフトウェアに関する情報
phpseclibにおけるタイミングの違いに起因する情報漏えいに関する脆弱性
Title phpseclibにおけるタイミングの違いに起因する情報漏えいに関する脆弱性
Summary

phpseclibはPHPの安全な通信ライブラリです。バージョン3.0.51、2.0.53、および1.0.28より前のphpseclib\Net\SSH2::get_binary_packet()は、受信したSSHパケットのHMACをローカルで計算したHMACと比較する際にPHPの!=演算子を使用していました。PHPにおける同じ長さのバイナリ文字列に対する!=演算子はmemcmp()を使用し、最初に異なるバイトで処理を中断します。これは実際には変動時間比較(CWE-208)に該当し、スケーリングベンチマークで証明されています。この脆弱性はバージョン3.0.51、2.0.53、および1.0.28で修正されています。

Possible impacts 当該ソフトウェアが扱う情報の一部が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアは停止しません。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
Solution

正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。

Publication Date April 10, 2026, midnight
Registration Date April 23, 2026, 10:11 a.m.
Last Update April 23, 2026, 10:11 a.m.
CVSS3.0 : 低
Score 3.7
Vector CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
Affected System
phpseclib
phpseclib 1.0.27 およびそれ以前
phpseclib 2.0.0 以上 2.0.53 未満
phpseclib 3.0.0 以上 3.0.51 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
ベンダー情報
その他
Change Log
No Changed Details Date of change
1 [2026年04月23日]
  掲載
April 23, 2026, 10:11 a.m.

NVD Vulnerability Information
CVE-2026-40194
Summary

phpseclib is a PHP secure communications library. 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.

Publication Date April 11, 2026, 6:16 a.m.
Registration Date April 15, 2026, 11:37 a.m.
Last Update April 22, 2026, 4:19 a.m.
Affected software configurations
Configuration1 or higher or less more than less than
cpe:2.3:a:phpseclib:phpseclib:*:*:*:*:*:*:*:* 1.0.27
cpe:2.3:a:phpseclib:phpseclib:*:*:*:*:*:*:*:* 2.0.0 2.0.53
cpe:2.3:a:phpseclib:phpseclib:*:*:*:*:*:*:*:* 3.0.0 3.0.51
Related information, measures and tools
Common Vulnerabilities List