🇰🇷 한글 설명
MessagePack for Java 0.9.11 미만 버전에서 발생하는 서비스 거부(DoS) 취약점입니다. 공격자가 조작한 EXT32 객체가 포함된 .msgpack 파일을 역직렬화할 때, 선언된 페이로드 길이를 검증 없이 사용하여 과도한 메모리를 할당함으로써 JVM 힙 메모리 고갈을 유발할 수 있습니다.
💡 쉬운 설명
악의적으로 조작된 작은 파일을 읽는 것만으로도 컴퓨터의 메모리를 순식간에 모두 써버리게 만들어 서비스를 중단시킬 수 있는 문제입니다. 이로 인해 프로그램이 멈추거나 강제로 종료될 수 있습니다.
🇺🇸 원문 (English)
MessagePack for Java is a serializer implementation for Java. A denial-of-service vulnerability exists in versions prior to 0.9.11 when deserializing .msgpack files containing EXT32 objects with attacker-controlled payload lengths. While MessagePack-Java parses extension headers lazily, it later trusts the declared EXT payload length when materializing the extension data. When ExtensionValue.getData() is invoked, the library attempts to allocate a byte array of the declared length without enforcing any upper bound. A malicious .msgpack file of only a few bytes can therefore trigger unbounded heap allocation, resulting in JVM heap exhaustion, process termination, or service unavailability. This vulnerability is triggered during model loading / deserialization, making it a model format vulnerability suitable for remote exploitation. The vulnerability enables a remote denial-of-service attack against applications that deserialize untrusted .msgpack model files using MessagePack for Java. A specially crafted but syntactically valid .msgpack file containing an EXT32 object with an attacker-controlled, excessively large payload length can trigger unbounded memory allocation during deserialization. When the model file is loaded, the library trusts the declared length metadata and attempts to allocate a byte array of that size, leading to rapid heap exhaustion, excessive garbage collection, or immediate JVM termination with an OutOfMemoryError. The attack requires no malformed bytes, user interaction, or elevated privileges and can be exploited remotely in real-world environments such as model registries, inference services, CI/CD pipelines, and cloud-based model hosting platforms that accept or fetch .msgpack artifacts. Because the malicious file is extremely small yet valid, it can bypass basic validation and scanning mechanisms, resulting in complete service unavailability and potential cascading failures in production systems. Version 0.9.11 fixes the vulnerability.
📍 영향받는 시스템
MessagePack for Java 0.9.11 미만 모든 버전
⚔️ 공격 벡터
신뢰할 수 없는 .msgpack 파일을 역직렬화하거나 모델을 로드할 때 원격으로 공격 가능
🛡️ 대응 방법
MessagePack for Java를 0.9.11 이상 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 결과에서 msgpack-core의 버전을 확인하여 0.9.11 미만인지 체크합니다.
mvn dependency:list | grep msgpack-core