CVE-2026-78030 in DBI
Tóm tắt
Bởi VulDB • 19/09/2026
Các phiên bản của DBI trước 1.653 cho Perl tải các module tùy ý thông qua các thuộc tính dbm_type và dbm_mldbm không được xác thực trong DBD::DBM.
DBD::DBM chuyển các thuộc tính kết nối dbm_type và dbm_mldbm đến hàm require mà không kiểm tra xem giá trị có chỉ định một module hay không. Hàm require coi một chuỗi có dạng đường dẫn là tên tệp tin cụ thể và không tham khảo @INC, do đó thuộc tính này chọn ra file mà Perl sẽ tải và thực thi.
Tiền tố MLDBM::Serializer:: mà DBD::DBM thêm vào dbm_mldbm không phải là ranh giới an toàn: chỉ các ký tự phân tách :: được chuyển đổi thành /, vì vậy một giá trị chứa dấu / có thể vượt ra khỏi thư mục serializer. Giá trị này cũng được gán cho $MLDBM::Serializer, điều mà MLDBM yêu cầu theo cách tương tự khi nó liên kết (tie) bảng dữ liệu.
Một caller cho phép bên không đáng tin cậy ảnh hưởng đến bất kỳ thuộc tính nào trong số hai thuộc tính trên, ví dụ thông qua một đoạn DSN hoặc tham số chọn backend lưu trữ, sẽ thực thi mã ở phạm vi tệp của module mà giá trị đó chỉ định.
Ví dụ:
my $dsn = "dbi:DBM:f_dir=/var/db;dbm_type=../../Untrusted.pm" my $dbh = DBI->connect( $dsn );
Lưu ý rằng DBD::Gofer chuyển các thuộc tính kết nối sang phía máy chủ, và DBI::ProxyServer chỉ kiểm tra xem DSN có bắt đầu bằng tiền tố driver hay không.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.