Bitech cảnh báo lỗ hổng mức độ CRITICAL (CVE-2026-13221) trên Perl đến phiên bản 5.43.9, gây sai lệch xử lý biểu thức chính quy và nguy cơ bị vượt qua cơ chế lọc an ninh.
Tổng quan về lỗ hổng CVE-2026-13221
Vào ngày 13/07/2026, cơ sở dữ liệu lỗ hổng quốc gia (NVD) và cộng đồng phát triển Perl đã công bố thông tin về lỗ hổng bảo mật nghiêm trọng mang mã hiệu CVE-2026-13221. Lỗ hổng này được xếp hạng CRITICAL (nghiêm trọng) trên thang điểm CVSS, ảnh hưởng trực tiếp đến cơ chế xử lý biểu thức chính quy (Regular Expression - Regex) trong ngôn ngữ Perl.
Chi tiết kỹ thuật
Lỗ hổng xuất hiện trong hàm Perl_study_chunk trên các phiên bản Perl từ 5.43.9 trở xuống.
Cụ thể, khi một biểu thức chính quy chứa danh sách lựa chọn (alternation) có hơn 65.535 nhánh chuỗi cố định (fixed string branches) được biên dịch thành cấu trúc dữ liệu dạng cây (trie), khoảng cách (delta) giữa nhánh đầu tiên và phần đuôi dùng chung sẽ được lưu trữ trong một trường dữ liệu 16-bit.
Do số lượng nhánh vượt quá 65.535, sự cố tràn số nguyên (integer overflow) sẽ xảy ra trong trường 16-bit này. Bảng quyết định khớp chuỗi của cấu trúc trie sau đó bị cắt ngắn (truncated) mà hệ thống không hề đưa ra bất kỳ cảnh báo hoặc thông báo lỗi nào.
Mức độ ảnh hưởng và rủi ro an ninh
Sự cố âm thầm xử lý sai trong Regex dẫn đến hai hệ quả nguy hiểm:
- Dương tính giả (False positive): Biểu thức chính quy khớp với các chuỗi ký tự mà lẽ ra không được phép khớp.
- Âm tính giả (False negative): Biểu thức chính quy bỏ sót các chuỗi ký tự mà lẽ ra phải khớp.
Trong thực tế, nếu biểu thức chính quy này được sử dụng để làm cổng kiểm soát truy cập (access control), xác thực người dùng hoặc lọc dữ liệu đầu vào (input filtering), kết quả trả về sẽ bị sai lệch hoàn toàn. Kẻ tấn công có thể lợi dụng sơ hở này để vượt qua các hàng rào an ninh, truy cập trái phép vào tài nguyên bảo mật hoặc thực hiện các hành vi thao túng dữ liệu.
Đối tượng bị ảnh hưởng
- Tất cả các hệ thống, ứng dụng web hoặc dịch vụ đang vận hành trên Perl phiên bản <= 5.43.9.
- Các chương trình xử lý Regex quy mô lớn có chứa trên 65.535 nhánh lựa chọn chuỗi cố định.
Khuyến nghị khắc phục
Chuyên gia an ninh mạng từ Bitech khuyến cáo các nhà phát triển và quản trị viên hệ thống nhanh chóng thực hiện các bước sau:
- Cập nhật phần mềm: Kiểm tra và nâng cấp Perl lên phiên bản mới nhất ngay khi bản phân phối hệ điều hành hoặc trang chủ Perl cung cấp bản vá chính thức.
- Áp dụng patch mã nguồn: Nếu tự biên dịch Perl, quản trị viên có thể áp dụng trực tiếp bản vá từ commit
03f74bbbd3a68350d926ee93d56ee4808c28c4c7trên kho lưu trữ GitHub của Perl5. - Kiểm tra mã nguồn ứng dụng: Rà soát lại các biểu thức chính quy trong dự án, hạn chế việc gộp quá 65.535 nhánh lựa chọn trong một Regex đơn lẻ.
Nguồn tham khảo
- National Vulnerability Database (NVD): https://nvd.nist.gov/vuln/detail/CVE-2026-13221
- Perl5 GitHub Patch: https://github.com/Perl/perl5/commit/03f74bbbd3a68350d926ee93d56ee4808c28c4c7.patch
- Perl5 Issue Tracker: https://github.com/Perl/perl5/issues/23388
- OSS Security Advisory: http://www.openwall.com/lists/oss-security/2026/07/13/5
Ngày phát hành: 13/07/2026
Nguồn: NVD — CVE-2026-13221
Tham khảo: https://github.com/Perl/perl5/commit/03f74bbbd3a68350d926ee93d56ee4808c28c4c7.patch
Tham khảo: https://github.com/Perl/perl5/issues/23388
Tham khảo: http://www.openwall.com/lists/oss-security/2026/07/13/5