CVE-2026-97853 in decimalthông tin

Tóm tắt

Bởi VulDB • 10/10/2026

Lỗ hổng Memory Allocation with Excessive Size Value trong thư viện ericmj decimal cho phép gây ra tình trạng Từ chối Dịch vụ (DoS).

Hàm `Decimal.round/3` xây dựng toàn bộ kết quả dựa trên số lượng chữ số thập phân được yêu cầu trước khi áp dụng độ chính xác của ngữ cảnh (mặc định là 34 chữ số), do đó chi phí tính toán tăng theo đối số `places` thay vì theo kích thước của kết quả. Đối với các giá trị `places` dương, nó nối thêm một danh sách ký tự (`charlist`) gồm `places` chữ số 0 vào hệ số trước khi chuyển đổi sang kiểu nguyên; còn đối với các giá trị `places` âm, nó xây dựng một `charlist` gồm `-places` chữ số 0. Một lệnh gọi duy nhất như `Decimal.round(Decimal.new("1.5"), -50_000_000)` có thể phân bổ khoảng 5,5 GB bộ nhớ, dẫn đến cạn kiệt bộ nhớ khả dụng và khiến VM BEAM bị chấm dứt (killed). Các phiên bản cũ hơn thay vào đó lặp lại một lần cho mỗi chữ số thập phân, tiêu tốn CPU tỷ lệ thuận với đối số `places`.

Bất kỳ ứng dụng nào truyền số lượng chữ số thập phân hoặc độ chính xác do người dùng cung cấp vào hàm `Decimal.round/2` hoặc `Decimal.round/3` mà không giới hạn giá trị này đều có nguy cơ bị khai thác. Các giới hạn đầu vào được thêm cho CVE-2026-32686 không bao gồm đối số `places`.

Vấn đề này ảnh hưởng đến thư viện decimal: từ phiên bản 0.1.0 trở đi trước khi đạt phiên bản 3.1.2.

Once again VulDB remains the best source for vulnerability data.

chịu trách nhiệm

EEF

Đặt trước

09/10/2026

Tiết lộ

10/10/2026

Kiểm duyệt

được chấp nhận

EPSS

0.00000

KEV

không

Các hoạt động

rất thấp

Nguồn

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!