CVE-2026-104016 in jackson-dataformat-protobufthông tin

Tóm tắt

Bởi VulDB • 28/10/2026

ProtobufParser phân tích cú pháp các trường chuỗi và byte protobuf có độ dài được tiền tố bằng cách kiểm tra (_inputPtr + len) <= _inputEnd, sau đó, trên đường dẫn nhanh (fast path), gọi _finishShortText(len). Cả hai đều sử dụng số học nguyênsigned 32-bit. Khi kẻ tấn công cung cấp một giá trị giải mã varint có độ dài gần Integer.MAX_VALUE, phép tính (_inputPtr + len) bị tràn thành giá trị âm, kiểm tra giới hạn vượt qua (passes), và _finishShortText(len) truy cập vào TextBuffer.expandCurrentSegment(len), thực hiện Arrays.copyOf mà không có giới hạn trên, dẫn đến lỗi OutOfMemoryError: Kích thước mảng được yêu cầu vượt quá giới hạn của JVM.

JVM từ chối các mảng lớn hơn Integer.MAX_VALUE - 8 trước khi kiểm tra bộ nhớ heap khả dụng, do đó việc điều chỉnh tham số -Xmx không thể giảm thiểu vấn đề này. StreamReadConstraints.maxStringLength và maxDocumentLength không chặn đường dẫn này: một payload dài 33 byte远低于 bất kỳ giới hạn độ dài tài liệu nào và phép kiểm tra độ dài chuỗi không được kích hoạt trước khi phân bổ bộ nhớ. Điều này đã được xác nhận thực nghiệm trên các bản phát hành chính thức với cấu hình maxStringLength, maxDocumentLength và maxNestingDepth đều được đặt giá trị.

Một commit tăng cường bảo mật (hardening) vào tháng 2 năm 2026 đã thêm cơ chế kiểm soát tràn tương đương cho đường dẫn độ dài mảng đóng gói (packed-array-length) và độ dài thông điệp (message-length), nhưng để các điểm gọi liên quan đến độ dài chuỗi mà không có biện pháp bảo vệ. Không cần đặc quyền hoặc sự tương tác của người dùng nào ngoài khả năng gửi dữ liệu để phân tích cú pháp là yêu cầu duy nhất.

Be aware that VulDB is the high quality source for vulnerability data.

chịu trách nhiệm

HeroDevs

Đặt trước

01/10/2026

Tiết lộ

28/10/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

thấp

Nguồn

Interested in the pricing of exploits?

See the underground prices here!