🇰🇷 한글 설명
Python 3.1~3.3의 UTF-16 디코더에서 unicode_decode_call_errorhandler 함수 호출 후 aligned_end 변수가 제대로 업데이트되지 않는 버그입니다. 이로 인해 프로세스 메모리 정보 유출 또는 메모리 손상으로 인한 충돌이 발생할 수 있습니다.
💡 쉬운 설명
Python이 외국어 텍스트를 읽을 때 내부 계산을 제대로 하지 못하는 버그입니다. 공격자가 악의적인 파일을 보내면 컴퓨터 메모리에 있는 비밀정보를 훔치거나 프로그램을 충돌시킬 수 있습니다.
🇺🇸 원문 (English)
The utf-16 decoder in Python 3.1 through 3.3 does not update the aligned_end variable after calling the unicode_decode_call_errorhandler function, which allows remote attackers to obtain sensitive information (process memory) or cause a denial of service (memory corruption and crash) via unspecified vectors.
📍 영향받는 시스템
Python 3.1, 3.2, 3.3
⚔️ 공격 벡터
특수한 UTF-16 인코딩된 문자열을 포함한 파일이나 데이터를 원격에서 전송하여 디코딩 오류 발생
🛡️ 대응 방법
Python을 3.3.3 이상 또는 3.2.5 이상으로 업그레이드
🔧 검증 코드
VULNERABLE 출력시 영향받는 버전, 아무것도 출력 안 되면 안전한 버전입니다.
python3 --version | awk '{print $2}' | awk -F. '{if($1==3 && ($2<2 || ($2==2 && $3<5) || ($2==3 && $3<3))) print "VULNERABLE"}'