🇰🇷 한글 설명
UltraJSON 5.12.1 미만 버전에서 ujson.dump()를 사용하여 파일 유사 객체에 데이터를 쓸 때, 쓰기 작업 중 예외가 발생하면 직렬화된 JSON 문자열 객체의 참조 횟수가 감소하지 않아 메모리가 누수됩니다. 각 실패한 쓰기 작업마다 직렬화된 페이로드 전체 크기만큼 메모리가 누수되는 취약점입니다.
💡 쉬운 설명
데이터를 파일로 저장하는 과정에서 오류가 발생하면, 사용했던 메모리를 제대로 돌려주지 않고 계속 쌓아두는 버그입니다. 이 문제가 반복되면 컴퓨터의 메모리가 부족해져 시스템 성능이 떨어지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. Prior to 5.12.1, when ujson.dump() writes to a file-like object and the write operation raises an exception, the serialized JSON string object is not decremented, leaking memory. Each failed write operation leaks the full size of the serialized payload. This vulnerability is fixed in 5.12.1.
📍 영향받는 시스템
UltraJSON (ujson) versions prior to 5.12.1
⚔️ 공격 벡터
파일 쓰기 작업 중 의도적으로 예외를 유발하여 메모리 누수를 반복적으로 발생시킴
🛡️ 대응 방법
UltraJSON 버전을 5.12.1 이상으로 업데이트
🔧 검증 코드
출력된 Version이 5.12.1 미만이면 취약한 버전임
pip show ujson | grep Version