🇰🇷 한글 설명
UltraJSON 5.13.0 미만 버전에서 ujson.dumps() 등의 함수에 reject_bytes=False 옵션을 사용할 경우, 잘못되었거나 잘린 UTF-8 바이트 시퀀스를 거부하지 않고 다른 유니코드 문자로 조용히 변환합니다. 이로 인해 입력값 검증 우회 및 데이터 무결성 문제가 발생할 수 있습니다.
💡 쉬운 설명
데이터를 처리할 때 잘못된 글자 형식이 들어와도 오류를 내지 않고 임의로 글자를 바꿔버리는 문제입니다. 이 과정에서 보안 검사를 통과해야 할 데이터가 변형되어 시스템에 문제를 일으킬 수 있습니다.
🇺🇸 원문 (English)
UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. Prior to 5.13.0, ujson.dumps() (or ujson.dump() or ujson.encode()) have a reject_bytes=False option. When set, they may accept malformed or truncated UTF-8 byte sequences, silently rewriting them into different Unicode characters instead of rejecting them. This leads to input validation bypass and data integrity issues. This vulnerability is fixed in 5.13.0.
📍 영향받는 시스템
UltraJSON (ujson) 5.13.0 미만 버전
⚔️ 공격 벡터
잘못된 UTF-8 바이트 시퀀스를 포함한 데이터를 입력하여 입력값 검증 로직을 우회함
🛡️ 대응 방법
UltraJSON 라이브러리를 5.13.0 이상 버전으로 업데이트하거나 reject_bytes 옵션을 사용하지 않음
🔧 검증 코드
출력된 버전 번호가 5.13.0보다 낮은지 확인합니다.
pip show ujson | grep Version