phpseclibにおけるタイミングの違いに起因する情報漏えいに関する脆弱性
タイトル phpseclibにおけるタイミングの違いに起因する情報漏えいに関する脆弱性
概要

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で修正されています。

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

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

公表日 2026年4月10日0:00
登録日 2026年4月23日10:11
最終更新日 2026年4月23日10:11
CVSS3.0 : 低
スコア 3.7
ベクター CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
影響を受けるシステム
phpseclib
phpseclib 1.0.27 およびそれ以前
phpseclib 2.0.0 以上 2.0.53 未満
phpseclib 3.0.0 以上 3.0.51 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
ベンダー情報
その他
変更履歴
No 変更内容 変更日
1 [2026年04月23日]
  掲載
2026年4月23日10:11

NVD脆弱性情報
CVE-2026-40194
概要

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.

公表日 2026年4月11日6:16
登録日 2026年4月15日11:37
最終更新日 2026年4月22日4:19
影響を受けるソフトウェアの構成
構成1 以上 以下 より上 未満
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
関連情報、対策とツール
共通脆弱性一覧