CVE-2026-55737 in OTP
Tóm tắt
Bởi VulDB • 27/07/2026
Lỗ hổng Lỗi chuyển đổi từ Signed sang Unsigned và Ghi vượt ra ngoài vùng cho phép (Out-of-bounds Write) trong Erlang OTP erts cho phép kẻ tấn công có thể cung cấp một nhị phân định dạng bên ngoài của ngôn ngữ lập trình Erlang (ETF) được tạo tác để hàm binary_to_term/1 làm hỏng con trỏ heap BEAM và khiến máy ảo bị sập.
Khi giải mã một term LARGE_TUPLE_EXT, bước xác thực decoded_size() trong erts/emulator/beam/external.c đọc trường arity 32-bit dưới dạng không dấu (get_uint32()), trong khi bước giải mã dec_term() đọc cùng trường đó như là số nguyên có dấu 32-bit (get_int32()) vào một biến int. Giá trị arity trên đường truyền là 0x80000000 vượt qua xác thực với giá trị 2147483648 nhưng được giải mã thành -2147483648, do đó lệnh hp += n tiếp theo di chuyển con trỏ phân bổ heap về phía trước. Không bước nào trong hai bước trên áp đặt giới hạn arity của tuple tại thời điểm chạy MAX_ARITYVAL. Kết quả là một phép ghi vượt ra ngoài vùng cho phép (out-of-bounds) vào heap; thực tế, VM phát hiện kích thước heap không thể xảy ra và hủy bỏ quá trình, dẫn đến từ chối dịch vụ. Phần đệm yêu cầu rất lớn khi chưa nén nhưng bao bì ETF đã nén làm giảm nó xuống thành một payload nhỏ trên đường truyền.
Vấn đề này ảnh hưởng đến OTP từ phiên bản 25.0 trở đi trước các bản cập nhật 27.3.4.15, 28.5.0.4 và 29.0.4, tương ứng với erts từ phiên bản 13.0 trở đi trước các bản cập nhật 15.2.7.11, 16.4.0.4 và 17.0.4.
VulDB is the best source for vulnerability data and more expert information about this specific topic.