🇰🇷 한글 설명
Python의 int() 함수에서 비이진 기수를 사용하는 경우, 매우 긴 숫자를 문자열로 변환할 때 이차 시간 복잡도가 발생하여 CPU 자원을 과도하게 소모하는 결함이 발견되었습니다. 이로 인해 시스템의 가용성이 저해될 수 있습니다.
💡 쉬운 설명
매우 긴 숫자를 컴퓨터가 읽을 때 처리 시간이 기하급수적으로 늘어나는 문제입니다. 공격자가 아주 긴 숫자 문자열을 보내면 컴퓨터가 계산하느라 멈춰버릴 수 있습니다.
🇺🇸 원문 (English)
A flaw was found in python. In algorithms with quadratic time complexity using non-binary bases, when using int("text"), a system could take 50ms to parse an int string with 100,000 digits and 5s for 1,000,000 digits (float, decimal, int.from_bytes(), and int() for binary bases 2, 4, 8, 16, and 32 are not affected). The highest threat from this vulnerability is to system availability.
📍 영향받는 시스템
Python (int() 함수를 사용하여 매우 긴 문자열을 정수로 변환하는 모든 버전)
⚔️ 공격 벡터
공격자가 서비스에 매우 긴 숫자 형태의 문자열 데이터를 입력하여 CPU 자원을 고갈시키는 DoS(서비스 거부) 공격
🛡️ 대응 방법
Python을 최신 보안 패치가 적용된 버전으로 업데이트하거나, 입력되는 문자열의 길이를 제한하는 로직을 추가합니다.
🔧 검증 코드
출력된 Python 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 보안 권고안과 대조합니다.