Ad

CVE-2026-81728

HIGH CVSS 4.0: 8,6
Обновлено 27 августа 2026
Dolibarr
Параметр Значение
CVSS 8,6 (HIGH)
Уязвимые версии до 24.0.0
Устранено в версии 24.0.0
Тип уязвимости CWE-89 (SQL-инъекция)
Поставщик Dolibarr
Публичный эксплойт Нет

Dolibarr до версии 24.0.0 содержит SQL-инъекцию в мастере импорта CSV и XLSX. Мастер считывает ключи обновления с помощью GETPOST('updatekeys', 'array') в файле htdocs/imports/import.php, который применяет только общий фильтр Alphanohtml: который удаляет HTML, но оставляет нетронутыми ключевые слова SQL, маркеры комментариев, круглые скобки, пробелы и кавычки. import_insert() в htdocs/core/modules/import/import_csv.modules.php затем повторяет отправленные значения и создает фильтр с $where[] = $key.' = '.$data[$key], предварительно применив preg_replace('/^.*\./i', '', $key), полосу псевдонимов, которая ничего не делает со значением, не содержащим точки. Собранная строка выполняется через $this->db->query().

Внедренный SELECT разрешает идентификатор строки, который импорт затем присваивает $lastinsertid, который становится целью WHERE последующего UPDATE, поэтому UNION SELECT, возвращающий выбранное злоумышленником целое число, одновременно извлекает произвольное содержимое таблицы и перенаправляет строку, которую импорт перезаписывает; для таблиц ссылок категорий необработанный массив фильтров напрямую встраивается в этот UPDATE. Интерфейс предлагает фиксированный список допустимых кодов столбцов, но сервер никогда не сверяет с ним отправленные значения. Пользователь, обладающий разрешением на импорт, может воспользоваться этим.

Версия 23.0.4 не содержит исправлений; тест списка разрешенных был добавлен в версии 24.0.0.

Показать оригинальное описание (EN)

Dolibarr before 24.0.0 contains a SQL injection in its CSV and XLSX import wizard. The wizard reads its update keys with GETPOST('updatekeys', 'array') in htdocs/imports/import.php, which applies only the generic alphanohtml filter: that strips HTML but leaves SQL keywords, comment markers, parentheses, spaces and quotes intact. import_insert() in htdocs/core/modules/import/import_csv.modules.php then iterates the submitted values and builds a filter with $where[] = $key.' = '.$data[$key], having first applied preg_replace('/^.*\./i', '', $key), an alias strip that does nothing to a value containing no dot. The assembled string is executed through $this->db->query(). The injected SELECT resolves the row id that the import then assigns to $lastinsertid, which becomes the WHERE target of a subsequent UPDATE, so a UNION SELECT returning an attacker-chosen integer both exfiltrates arbitrary table content and redirects which row the import overwrites; for category link tables the raw filter array is spliced into that UPDATE directly. The interface offers a fixed list of legitimate column codes but the server never checks the submitted values against it. A user holding the import permission can exploit this. Release 23.0.4 does not carry the fix; the allow-list test was added in 24.0.0.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Условия для атаки
Не требуются
Нет дополнительных условий
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Высокое
Полная модификация данных
Доступность
Нет
Нет нарушения работы

Строка CVSS v4.0

Тип уязвимости (CWE)

Уязвимые продукты 1

Конфигурация От (включительно) До (исключительно)
Dolibarr Dolibarr_Erp\/Crm
cpe:2.3:a:dolibarr:dolibarr_erp\/crm:*:*:*:*:*:*:*:*
24.0.0