🇰🇷 한글 설명
Magento 2의 암호화 모듈에서 초기화 벡터(IV) 생성에 암호학적으로 안전하지 않은 PHP rand() 함수를 사용하여, 공격자가 난수를 추측하여 암호화 보호를 우회할 수 있는 취약점입니다. 이를 통해 민감한 데이터의 암호화가 약화됩니다.
💡 쉬운 설명
Magento 2가 데이터를 잠그기 위해 사용하는 '열쇠'를 생성할 때 약한 난수 생성기를 사용해서, 해커가 그 열쇠를 쉽게 맞출 수 있는 문제입니다. 결과적으로 암호화된 데이터가 쉽게 해독될 수 있습니다.
🇺🇸 원문 (English)
The __construct function in Framework/Encryption/Crypt.php in Magento 2 uses the PHP rand function to generate a random number for the initialization vector, which makes it easier for remote attackers to defeat cryptographic protection mechanisms by guessing the value.
📍 영향받는 시스템
Magento 2.0.x ~ 2.0.11 버전 (이후 버전에서 패치됨)
⚔️ 공격 벡터
공격자가 약한 IV 값을 통계적으로 추측하여 암호화된 데이터를 무차별 대입(brute force) 또는 통계 분석으로 복호화
🛡️ 대응 방법
Magento 2.0.12 이상으로 업그레이드하거나, Framework/Encryption/Crypt.php에서 rand() 대신 random_bytes() 또는 openssl_random_pseudo_bytes()를 사용하도록 패치 적용
🔧 검증 코드
취약한 rand() 함수가 IV 생성에 사용되고 있으면 해당 줄이 출력되며, 출력되지 않으면 패치가 적용된 상태입니다.
grep -r 'rand()' /path/to/magento/app/code/Magento/Framework/Encryption/ 2>/dev/null | grep -i 'iv\|vector'