CVE-2026-78030 в Ubuntu: загрузка произвольного Perl-модуля через DBI

CVE: CVE-2026-78030
Продукт: Ubuntu
Дата публикации: 19.09.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,73%; процентиль 52,66%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В пакетах libdbi-perl для Ubuntu до исправления CVE-2026-78030 параметры dbm_type и dbm_mldbm передаются в require без проверки. Запрос с вредоносным DSN или параметром выбора хранилища может заставить Perl загрузить произвольный файл как модуль. Риск актуален для сервисов, которые принимают внешние данные в строках подключения DBI.

Основные характеристики​


Уязвимость позволяет загрузить и выполнить произвольный Perl-код через параметры подключения DBD::DBM. Проблема затрагивает libdbi-perl до версии 1.653 и не требует локального доступа или привилегий, если приложение уже принимает внешний DSN или параметр хранилища.

  • Тип ошибки: CWE-470 — загрузка произвольного кода через недоверенные параметры.
  • CVSS v3.1: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, оценка 9.8, критическая.
  • Вектор атаки: удалённый доступ через строку подключения или параметр выбора storage backend.
  • Факт эксплуатации: в предоставленных источниках нет подтверждения активной эксплуатации.
  • EPSS: 0,73% (доля 0.00725), процентиль 52,66%.

Какие продукты и версии затронуты​


В Ubuntu затронут пакет libdbi-perl в следующих версиях:

  • Ubuntu:Pro:14.04:LTS — libdbi-perl 1.630-1ubuntu0.1~esm6
  • Ubuntu:Pro:16.04:LTS — libdbi-perl 1.634-1ubuntu0.2+esm2
  • Ubuntu:Pro:18.04:LTS — libdbi-perl 1.640-1ubuntu0.3+esm1
  • Ubuntu:Pro:20.04:LTS — libdbi-perl 1.643-1ubuntu0.1+esm1
  • Ubuntu:22.04:LTS — libdbi-perl 1.643-3ubuntu0.1
  • Ubuntu:24.04:LTS — libdbi-perl 1.643-4ubuntu0.1
  • Ubuntu:26.04:LTS — libdbi-perl 1.647-1ubuntu0.26.04.1

Официальный список затронутых версий: Ubuntu OSV.

Причина уязвимости​


DBD::DBM передаёт значения атрибутов dbm_type и dbm_mldbm в функцию require без проверки того, что значение соответствует имени модуля.

Функция require воспринимает строку в виде пути как имя файла и не обращается к @INC. Таким образом, значение атрибута напрямую определяет файл, который Perl загружает и исполняет.

Префикс MLDBM::Serializer::, который DBD::DBM добавляет к dbm_mldbm, не является границей: только разделители :: заменяются на /, а символ / позволяет выйти из каталога сериализатора. Значение также присваивается переменной $MLDBM::Serializer, которую MLDBM загружает аналогичным способом при связывании таблицы.

Как работает атака​


Атакующий влияет на значение dbm_type или dbm_mldbm через DSN, параметр выбора хранилища или любой другой вход, который попадает в строку подключения DBI.

DBD::DBM передаёт это значение в require. Perl загружает указанный файл как модуль и выполняет код на уровне файла.

Если приложение использует DBD::Gofer, атрибуты подключения передаются на серверную сторону. Если используется DBI::ProxyServer, проверяется только префикс драйвера в DSN, а не содержимое атрибутов.

В результате исполняется произвольный Perl-код из файла, который выбрал атакующий.

Условия успешной эксплуатации​


Для успешной эксплуатации необходимы следующие условия:

  • установлен пакет libdbi-perl в уязвимой версии;
  • приложение принимает внешний DSN или параметр выбора хранилища от недоверенного пользователя;
  • значение попадает в атрибут dbm_type или dbm_mldbm;
  • нет дополнительной валидации значения на стороне приложения.

Локальный доступ к системе не требуется, если приложение доступно извне и передаёт данные в DBI.

Возможный сценарий атаки​


Пользователь отправляет запрос с DSN вида dbi:DBM:f_dir=/var/db;dbm_type=../../Untrusted.pm.

Приложение передаёт этот DSN в DBI->connect. DBD::DBM извлекает значение dbm_type и передаёт его в require.

Perl загружает файл ../../Untrusted.pm как модуль. Код внутри файла исполняется в контексте процесса приложения.

Если приложение работает с правами пользователя, код выполняется с этими правами. Если приложение использует DBD::Gofer или DBI::ProxyServer, атака может быть направлена на серверную сторону.

Есть ли публичный эксплойт​


В предоставленных источниках нет информации о публичном эксплойте.

  • PoC: не подтверждён в источниках.
  • Техническое описание: доступно в NVD и Ubuntu OSV, содержит пример DSN с параметром dbm_type.
  • Подтверждённая эксплуатация: нет сведений о реальных атаках или компрометациях.

Отсутствие информации об эксплойте не означает его отсутствие. Механика уязвимости позволяет загрузить произвольный файл через атрибуты подключения.

Признаки эксплуатации​


Специфичных IOC для CVE-2026-78030 в источниках нет.

Неспецифичные точки контроля:

  • неожиданные загрузки Perl-модулей из каталогов вне стандартного @INC;
  • вызовы require с путями, содержащими ../ или абсолютными путями;
  • новые файлы в каталогах /var/db, /tmp, /dev или пользовательских каталогах;
  • аномальная активность процесса Perl: создание соединений, чтение системных файлов, изменение конфигурации.

Эти признаки не являются подтверждёнными IOC и требуют контекста приложения.

Как обнаружить атаку​


Для обнаружения атаки используйте следующие методы:

  • аудит логики обработки DSN в приложениях на базе DBI;
  • поиск вызовов require с нестандартными путями в Perl-коде;
  • мониторинг создания файлов в каталогах, доступных приложению;
  • анализ журналов процесса Perl на аномальные загрузки модулей.

Команды для проверки версии и конфигурации:

Bash:
cat /etc/os-release
uname -r
apt-cache policy <имя-пакета>
ubuntu-security-status

Замените <имя-пакета> на libdbi-perl при проверке конкретного пакета.

Как проверить свою версию​


Проверьте версию установленного пакета и статус безопасности:

Bash:
cat /etc/os-release
uname -r
apt-cache policy libdbi-perl
ubuntu-security-status

Сравните версию с затронутыми версиями из Ubuntu OSV. Если пакет установлен в версии до исправления, требуется обновление.

Для проверки конкретного пакета используйте apt-cache policy <имя-пакета>, заменив <имя-пакета> на имя пакета.

Исправление​


Обновите пакет libdbi-perl до исправленной версии:

Bash:
sudo apt update
sudo apt upgrade libdbi-perl

После обновления проверьте версию и статус безопасности:

Bash:
apt-cache policy libdbi-perl
ubuntu-security-status

Если обновление не возможно, рассмотрите временные меры защиты.

Временные меры защиты​


При невозможности немедленного обновления используйте следующие меры:

  • ограничьте доступ к приложению, принимающему внешний DSN;
  • валидируйте значение dbm_type и dbm_mldbm на стороне приложения до передачи в DBI;
  • отключите использование DBD::Gofer или DBI::ProxyServer, если это возможно;
  • ограничьте права процесса Perl: запуск с минимальными привилегиями, изоляция файловой системы.

Эти меры снижают риск, но не устраняют уязвимость полностью.

Как проверить устранение уязвимости​


После обновления проверьте:

Bash:
apt-cache policy libdbi-perl
ubuntu-security-status

Убедитесь, что версия пакета соответствует исправленной версии из Ubuntu OSV.

Проверьте логи приложения на отсутствие аномальных загрузок модулей после обновления.

Тестирование: отправьте запрос с DSN, содержащим путь к тестовому файлу, и убедитесь, что файл загружается только в рамках ожидаемого поведения.

Вывод​


CVE-2026-78030 позволяет загрузить произвольный Perl-код через параметры подключения DBI. Риск критический для приложений, принимающих внешний DSN или параметр выбора хранилища без валидации.

Обновление libdbi-perl до версии 1.653 устраняет проблему. До обновления ограничьте доступ к приложению и валидируйте входные данные.

Официальные источники​


  1. NVD — CVE-2026-78030
  2. Ubuntu OSV — CVE-2026-78030
  3. FIRST EPSS — CVE-2026-78030

История обновлений статьи​


  • 24.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ