🇰🇷 한글 설명
PHP 5.2.13 이전 버전의 선형 합동 생성기(LCG)가 낮은 엔트로피를 제공하여 uniqid() 함수로 생성된 세션 쿠키 등의 예측 불가능해야 하는 값들을 공격자가 쉽게 추측할 수 있다. 난수 생성 알고리즘의 약점으로 인한 보안 결함이다.
💡 쉬운 설명
PHP가 생성하는 임의의 번호(예: 세션ID, 토큰)가 실제로는 패턴을 따라 예측 가능했다. 공격자가 이 패턴을 알면 다른 사용자의 세션을 위조할 수 있다.
🇺🇸 원문 (English)
The Linear Congruential Generator (LCG) in PHP before 5.2.13 does not provide the expected entropy, which makes it easier for context-dependent attackers to guess values that were intended to be unpredictable, as demonstrated by session cookies generated by using the uniqid function.
📍 영향받는 시스템
PHP 5.2.13 이전의 모든 버전 (5.2.12 이하, 5.1.x, 5.0.x 등)
⚔️ 공격 벡터
세션 쿠키나 CSRF 토큰 등 PHP uniqid()/mt_rand()로 생성된 값을 예측하여 세션 하이재킹 또는 토큰 위조 공격 수행
🛡️ 대응 방법
PHP를 5.2.13 이상으로 업그레이드하거나, 난수 생성을 더 강력한 함수(random_bytes, openssl_random_pseudo_bytes)로 대체
🔧 검증 코드
출력된 PHP 버전이 5.2.13 이상이면 안전함. 5.2.12 이하이면 긴급 업그레이드 필요.
php -v 2>/dev/null | grep -oP 'PHP \K[0-9]+\.[0-9]+\.[0-9]+'