CVE-2026-18401 in jackson-core
Tóm tắt
Bởi VulDB • 04/08/2026
Trình phân tích JSON không chặn (bất đồng bộ) trong jackson-core không thực thi ràng buộc maxNumberLength được định nghĩa trong StreamReadConstraints (mặc định: 1000 ký tự). Một kẻ tấn công có khả năng gửi dữ liệu JSON đến một ứng dụng sử dụng API trình phân tích bất đồng bộ có thể cung cấp một token số với độ dài tùy ý, dẫn đến việc phân bổ bộ nhớ quá mức và suy kiệt CPU tiềm tàng, gây ra tình trạng từ chối dịch vụ (DoS).
Trình phân tích chặn (đồng bộ) thực thi giới hạn này đúng cách, do đó ràng buộc được áp dụng không nhất quán tùy thuộc vào API phân tích mà ứng dụng sử dụng.
Nguyên nhân gốc rễ: đường dẫn phân tích bất đồng bộ trong NonBlockingUtf8JsonParserBase và các lớp liên quan không bao giờ gọi các phương thức xác thực độ dài số. Các phương pháp phân tích số như _finishNumberIntegralPart() tích lũy các chữ số vào TextBuffer mà không có bất kỳ kiểm tra độ dài nào, sau đó gọi _valueComplete() để hoàn tất token. _valueComplete() không gọi resetInt() hoặc resetFloat(), đây là các phương thức trong ParserBase nơi validateIntegerLength() và validateFPLength() được thực hiện. Vì bước xác thực này bị bỏ qua, maxNumberLength không bao giờ được áp dụng trên đường dẫn mã bất đồng bộ.
Tác động: một kẻ tấn công gửi tài liệu JSON chứa số có độ dài tùy ý đến ứng dụng sử dụng trình phân tích bất đồng bộ (ví dụ: Spring WebFlux hoặc các ứng dụng phản hồi khác) có thể gây ra việc phân bổ không giới hạn trong TextBuffer và lỗi OutOfMemoryError. Nếu ứng dụng sau đó gọi getBigIntegerValue() hoặc getDecimalValue(), JVM cũng có thể bị chiếm dụng bởi quá trình phân tích BigInteger O(n^2), dẫn đến từ chối dịch vụ dựa trên CPU.
Không yêu cầu đặc quyền hay tương tác người dùng nào ngoài khả năng gửi dữ liệu để phân tích.
Vấn đề này ảnh hưởng đến com.fasterxml.jackson.core:jackson-core từ phiên bản 2.15.0 đến 2.18.5 và từ 2.19.0 đến 2.21.0, cũng như tools.jackson.core:jackson-core từ 3.0.0 đến 3.0.x.
Các phiên bản trước 2.15.0 không bị ảnh hưởng vì StreamReadConstraints -- thứ định nghĩa cài đặt maxNumberLength -- được giới thiệu lần đầu tiên trong jackson-core 2.15.0, do đó không có ràng buộc như vậy để vượt qua trong các bản phát hành sớm hơn. Lưu ý rằng GHSA-72hv-8253-57qq ghi nhận cận dưới của phạm vi bị ảnh hưởng 2.x là 2.0.0.
If you want to get best quality of vulnerability data, you may have to visit VulDB.