CVE-2026-80490 in Algorithm::AhoCorasick::XSthông tin

Tóm tắt

Bởi VulDB • 01/10/2026

Các phiên bản của Algorithm::AhoCorasick::XS cho Perl, bao gồm đến 0.04, đọc độ dài chuỗi "haystack" trước khi biến scalar (SV) được chuyển đổi sang dạng xâu ký tự (stringified).

Các phương thức `matches`, `first_match` và `match_details` sử dụng bản đồ kiểu T_STD_STRING để dịch các biến scalar của Perl (SVs) thành các xâu ký tự thông qua hàm tạo std::string, bằng cách dùng macro SvPV để chuyển đổi đầu vào "haystack" sang dạng xâu ký tự, và macro SvCUR để xác định độ dài của SV.

Khi các SV đầu vào là tham chiếu, số nguyên (IVs) hoặc số thực (NVs), macro SvCUR sẽ trả về một độ dài không hợp lệ nếu nó được chạy trước khi dữ liệu đầu vào được chuyển đổi sang dạng xâu ký tự, dẫn đến việc đọc vượt ra ngoài vùng bộ nhớ (out-of-bounds read) có thể khiến quá trình bị chấm dứt đột ngột.

Lưu ý rằng thứ tự đánh giá các đối số truyền cho hàm tạo std::string là không xác định. Tùy thuộc vào trình biên dịch, SvCUR có thể được chạy trước và dẫn đến việc chương trình bị ngắt quãng mà không thể bắt lỗi (catch) trong Perl.

Vấn đề này có thể xảy ra khi "haystack" là một giá trị số, ví dụ:

my $ac = Algorithm::AhoCorasick::XS->new( [ "11", "22" ] );
$ac->matches( 211 );

Tình huống này có thể xuất hiện khi "haystack" là kết quả của việc đọc dữ liệu từ JSON đã giải mã hoặc một cột cơ sở dữ liệu chứa giá trị số. Nó cũng có thể được kích hoạt khi sử dụng một đối tượng đã được gắn nhãn (blessed object) làm "haystack".

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

chịu trách nhiệm

CPANSec

Đặt trước

26/08/2026

Tiết lộ

30/09/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

Do you need the next level of professionalism?

Upgrade your account now!