🔍 CVE-2026-40194

3.7
CVSS Score
LOW
2026-04-10
2026-05-08 16:16
✅ 완료

🇰🇷 한글 설명

phpseclib의 SSH2::get_binary_packet() 함수가 HMAC 비교에 != 연산자를 사용하여 시간-가변 비교 취약점(CWE-208)을 야기합니다. PHP의 != 연산자는 첫 바이트부터 단락되므로 공격자가 타이밍 분석으로 올바른 HMAC을 추측할 수 있습니다.

💡 쉬운 설명

phpseclib 라이브러리가 SSH 연결에서 데이터가 변조되지 않았는지 확인할 때 빠른 방법을 사용합니다. 이 빠른 방법은 공격자에게 타이밍 정보를 누출하여 검증을 우회할 수 있습니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

phpseclib 0.1.1~3.0.50, 2.0.52, 1.0.27 이전 모든 버전

⚔️ 공격 벡터

SSH 패킷의 HMAC 값을 조작하고 응답 시간을 측정하여 올바른 HMAC을 추측, SSH 통신 위변조

🛡️ 대응 방법

phpseclib를 3.0.51, 2.0.53, 또는 1.0.28 이상으로 즉시 업데이트

🔧 검증 코드

표시된 버전이 3.0.51, 2.0.53, 1.0.28 이상이면 취약점이 패치됨

Shell / Script
composer show phpseclib/phpseclib 2>/dev/null | grep -E 'version|installed'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N

💻 영향받는 소프트웨어

PHP