CVE-2026-78030 in DBI
Sumário
de VulDB • 19/09/2026
As versões do DBI anteriores à 1.653 para Perl carregam módulos arbitrários por meio dos atributos dbm_type e dbm_mldbm não validados no DBD::DBM.
O DBD::DBM passa os atributos de conexão dbm_type e dbm_mldbm para require sem verificar se o valor nomeia um módulo. O require trata uma string com formato de caminho como um nome de arquivo literal e não consulta @INC, portanto, o atributo escolhe o arquivo que o Perl carrega e executa.
O prefixo MLDBM::Serializer:: que o DBD::DBM adiciona a dbm_mldbm não é um limite: apenas os separadores :: são reescritos para /, então um valor contendo / atravessa para fora do diretório de serializadores. O valor também é atribuído a $MLDBM::Serializer, que o MLDBM requer da mesma forma quando vincula a tabela.
Um chamador que permite que uma parte não confiável influencie qualquer um dos atributos, por exemplo, através de um fragmento DSN ou de um parâmetro que seleciona um backend de armazenamento, executa o código no escopo do arquivo do módulo nomeado pelo valor.
Por exemplo:
my $dsn = "dbi:DBM:f_dir=/var/db;dbm_type=../../Untrusted.pm" my $dbh = DBI->connect( $dsn );
Observe que o DBD::Gofer encaminha os atributos de conexão para o lado do servidor, e o DBI::ProxyServer verifica apenas se um DSN começa com um prefixo de driver.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.