🇰🇷 한글 설명
Python의 google.protobuf.json_format.ParseDict() 함수에서 서비스 거부(DoS) 취약점이 발견되었습니다. 중첩된 google.protobuf.Any 메시지를 처리할 때 재귀 깊이 제한을 우회하여 Python의 재귀 스택을 소진시키고 RecursionError를 유발할 수 있습니다.
💡 쉬운 설명
특수하게 설계된 복잡한 데이터를 입력하면 프로그램이 이를 처리하다가 과부하로 인해 강제 종료되는 문제입니다. 공격자가 이를 이용해 서버를 마비시킬 수 있습니다.
🇺🇸 원문 (English)
A denial-of-service (DoS) vulnerability exists in google.protobuf.json_format.ParseDict() in Python, where the max_recursion_depth limit can be bypassed when parsing nested google.protobuf.Any messages.
Due to missing recursion depth accounting inside the internal Any-handling logic, an attacker can supply deeply nested Any structures that bypass the intended recursion limit, eventually exhausting Python’s recursion stack and causing a RecursionError.
📍 영향받는 시스템
Python protobuf 라이브러리
⚔️ 공격 벡터
깊게 중첩된 google.protobuf.Any 구조의 JSON 데이터를 ParseDict() 함수에 입력값으로 전달
🛡️ 대응 방법
protobuf 라이브러리를 최신 버전으로 업데이트하여 재귀 깊이 계산 로직이 수정된 버전을 사용하십시오.
🔧 검증 코드
출력된 protobuf 버전을 확인하여 보안 패치가 적용된 최신 버전인지 확인합니다.
pip show protobuf | grep Version