🇰🇷 한글 설명
PHP 4.4.8 이전 및 5.2.5 이전 버전에서 32비트 시스템 위의 GENERATE_SEED 매크로 결함으로 인해 rand()와 mt_rand() 함수의 시드가 0이 될 수 있습니다. 이로 인해 난수 생성이 예측 가능해져 난수 기반 보안 메커니즘이 우회됩니다.
💡 쉬운 설명
PHP가 난수를 만들 때 특정 상황에서 예측 가능한 패턴을 따릅니다. 공격자가 난수를 미리 알아낼 수 있어 암호화, 토큰, 세션 같은 보안 기능을 뚫릴 수 있습니다.
🇺🇸 원문 (English)
The GENERATE_SEED macro in PHP 4.x before 4.4.8 and 5.x before 5.2.5, when running on 32-bit systems, performs a multiplication using values that can produce a zero seed in rare circumstances, which allows context-dependent attackers to predict subsequent values of the rand and mt_rand functions and possibly bypass protection mechanisms that rely on an unknown initial seed.
📍 영향받는 시스템
PHP 4.0 ~ 4.4.7, PHP 5.0.0 ~ 5.2.4 (32비트 시스템)
⚔️ 공격 벡터
예측 가능한 난수 생성을 이용하여 세션 토큰, CSRF 토큰, 보안 토큰 등의 값을 미리 계산하여 우회
🛡️ 대응 방법
PHP를 4.4.8 이상 또는 5.2.5 이상으로 즉시 업그레이드
🔧 검증 코드
명령어 실행 결과가 'Vulnerable'이면 패치 필요, 'Patched'이면 안전 (PHP 버전이 요구 최소 버전 이상이면 안전)
php -v 2>/dev/null | grep -oE 'PHP [0-9.]+' | awk '{if($2 ~ /^(4\.[0-3]|4\.4\.[0-7]|5\.[01]|5\.2\.[0-4])/) print "Vulnerable"; else print "Patched"}'