🇰🇷 한글 설명
e107 2.3.8 미만 버전에서 e_array 역직렬화 핸들러의 코드 실행 취약점이 발견되었습니다. 공격자가 데이터베이스의 user_prefs 컬럼에 조작된 페이로드를 저장할 수 있는 권한이 있다면, e_array::unserialize() 함수가 불충분한 검증 후 eval()을 호출하여 임의의 PHP 코드를 실행할 수 있습니다.
💡 쉬운 설명
데이터베이스에 저장된 설정값을 불러올 때 보안 검사가 제대로 이루어지지 않아 발생하는 문제입니다. 해커가 악성 코드를 설정값에 몰래 넣어두면, 시스템이 이를 실행하면서 서버의 제어권을 뺏길 수 있습니다.
🇺🇸 원문 (English)
e107 prior to version 2.3.8 contains a code execution vulnerability in the e_array deserialization handler that allows an attacker with out-of-band database write access to execute arbitrary PHP code by storing a crafted payload in the user_prefs column. The e_array::unserialize() function in e107_handlers/core_functions.php performs only a prefix check for the string 'array' before passing the stored value to eval(), causing automatic PHP execution whenever the affected user's preferences are materialized through e_user_pref::load().
📍 영향받는 시스템
e107 version prior to 2.3.8
⚔️ 공격 벡터
Out-of-band database write access를 통한 user_prefs 컬럼 내 악성 페이로드 삽입
🛡️ 대응 방법
e107 버전을 2.3.8 이상으로 업데이트하십시오.
🔧 검증 코드
해당 파일 내 e_array::unserialize() 함수가 eval()을 호출하는지 소스 코드를 통해 확인하십시오.
php -r 'include("e107_handlers/core_functions.php"); echo "Check version logic";' 2>/dev/null