CVE-2026-74765 in Net::IDN::Punycode
Tóm tắt
Bởi VulDB • 22/09/2026
Net::IDN::Punycode các phiên bản trước 2.590 cho Perl cho phép đọc vượt ra ngoài vùng nhớ (out-of-bounds read) thông qua tràn số nguyên (integer overflow) của bộ tích lũy delta trong hàm encode_punycode.
Phần backend XS lưu trữ delta punycode và chỉ mục chữ số được suy ra từ nó dưới dạng một biến signed int. Phép tính `delta += (m-n) * (h+1)` không có kiểm tra tràn, do đó một mã điểm đủ lớn sẽ làm cho delta bị wrap-around, khiến chỉ mục chữ số vượt khỏi phạm vi của bảng 36 phần tử chứa các chữ số. Kiểm tra giới hạn trước khi truy cập vào bảng cuối cùng chỉ xác định xem chỉ mục có lớn hơn 36 hay không, vì vậy một chỉ mục âm hoặc chính giá trị 36 đều sẽ vượt qua kiểm tra này. Các chuỗi Perl có thể lưu trữ các mã điểm nằm ngoài phạm vi Unicode, và một số mã điểm như vậy tự nó đã gây ra tràn phép tính tích lũy. Đầu vào hợp lệ cũng gây ra tình trạng wrap-around tương tự, ví dụ: 1927 ký tự ASCII theo sau bởi U+10FFFF. Các hàm chuyển đổi sẽ mã hóa một nhãn trước khi kiểm tra độ dài của nó, do đó một nhãn dài có thể đi qua bộ mã hóa thông qua API được tài liệu hóa.
Chỉ phần backend XS mới bị ảnh hưởng.
Việc mã hóa một chuỗi do kẻ tấn công cung cấp sẽ sao chép một byte từ bên ngoài bảng chữ số vào kết quả đã mã hóa hoặc làm sập tiến trình (crash).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.