Debian и Ubuntu выпустили исправления для APT, пакетного менеджера, через который в этих дистрибутивах устанавливают почти всё остальное. Атакующий в пути между клиентом и зеркалом может подменить пакет уже после проверки. Пакеты ставятся с правами root, поэтому результат атаки - выполнение чужого кода на машине. В конфигурации по умолчанию сценарий работает в Debian 12 и новее, а также в Ubuntu 22.04 и новее.
Что известно об ошибке в APT
Условия атаки
Ошибка связана с работой APT с жёсткими ссылками. Пакетный менеджер скачивает файлы во временный каталог и после проверки переносит их на место установки. Если после HTTP-редиректа две разные загрузки получают один и тот же URI, APT сливает их в один файл. При возобновлении прерванной загрузки он неверно обрабатывает такой файл и позволяет заменить пакет уже после проверки. Атакующему нужно управлять трафиком: например, контролировать зеркало или прокси на пути клиента.
Сценарий требует, чтобы клиент следовал редиректам и повторял загрузку после временных ошибок сервера. За это отвечает параметр Acquire::Retries. С версии APT 2.3.2 значение по умолчанию ненулевое, в Debian 12 и Ubuntu 22.04 оно равно 3. Поэтому на актуальных выпусках атака не требует специальной настройки. В более старых выпусках повторы по умолчанию выключены, но пользовательские скрипты могли включить их вручную.
Учётная запись и действия пользователя атакующему не нужны: ошибка срабатывает в момент установки или обновления, когда APT обращается к архиву. По классификации это работа с жёсткими ссылками CWE-62 и гонка между проверкой и использованием CWE-367. Об ошибке сообщил Max Justicz.
Почему это опасно
При успехе на машине выполняется код злоумышленника с правами root. APT ставит пакеты от имени суперпользователя, поэтому содержимое подменённого пакета получает максимальные права. На серверах и рабочих станциях это контроль над системой, а не над отдельным приложением. Компрометация затрагивает и данные, и установленное ПО, поэтому машину придётся проверять целиком.
CVE-2026-109518 получила CVSS 4.0 - 7.7 (High) с вектором CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N. Параметр AT:P означает, что для атаки нужны дополнительные условия: подходящий путь трафика и включённые повторы. Ubuntu присвоила уязвимости приоритет High. Debian в анонсе называет её обходом проверки подлинности файлов (critical file verification bypass), отдельную оценку CVSS не приводит.
Кто под ударом
Уязвимы Debian, Ubuntu и производные дистрибутивы, которые используют APT. В первую очередь это сценарии, где машина ставит пакеты из сети: серверы, рабочие станции, сборочные фермы и CI, а также контейнеры на этапе сборки. Внутреннее зеркало не гарантирует защиту: если его контролирует атакующий или оно стоит за скомпрометированным прокси, условие выполняется. Поэтому проверять стоит не только машины с выходом в интернет, но и сборочные конвейеры, где пакеты ставятся автоматически.
Затронутые версии
В Debian уязвимы bookworm с apt 2.6.1 и trixie с apt 3.0.3. Исправления вышли в 2.6.2 и 3.0.4 в security-репозитории. Ветка forky остаётся уязвимой в 3.3.5, в sid закрыта версией 3.3.6. Запись CVE перечисляет диапазоны: версии ниже 1.2.36, 1.4.12, 1.6.19, 1.8.2.4, а также 1.8.3 - 1.8.5, 2.0.12, 2.2.5, 2.4.15, 2.6.2, 2.8.4, 3.0.4, 3.2.1 и 3.3.6.
В Ubuntu статусная таблица помечает уязвимыми все выпуски от 14.04 до 26.10, но в конфигурации по умолчанию сценарий применим начиная с 22.04. Исправленные пакеты: 2.4.15ubuntu0.1 для 22.04, 2.8.4ubuntu0.1 для 24.04, 3.2.1ubuntu0.1 для 26.04 и 3.3.3ubuntu0.1 для 26.10. Для 20.04, 18.04, 16.04 и 14.04 обновления вышли по подписке Ubuntu Pro: 2.0.12+esm1, 1.6.19+esm1, 1.2.36+esm1 и 1.0.1ubuntu2.24+esm4.
Релизное объявление перечисляет 11 веток, а вместе с двумя линиями Ubuntu Pro выходит 13 исправленных выпусков. Обновления вышли 4 ноября 2026 года: DSA-6607-1 для Debian и USN-8996-1 для Ubuntu. Для LTS-ветки Debian выпустила отдельное уведомление DLA-4880-1, а выпуски eLTS получают патч по своим каналам.
Что ещё вошло в патч
Помимо этой ошибки обновления закрывают несколько выходов за границы памяти: в разборе управляющих символов .deb, в проверке ответов DNS в srvrec, в сканировании tag-файлов и в порядке сравнения в решателе зависимостей. Мейнтейнеры не ждут от них прямого влияния на безопасность, кроме отказа в обслуживании сторонних приложений, которые разбирают недоверенные файлы на границе привилегий.
Отдельно исправлена утечка памяти в APT 2.6, 2.8 и 3.0: при повторной обработке отложенных элементов ошибка могла бесконечно расти в логах и памяти. Отчёты - bug 1111554 и 1152704. Часть выходов за границы памяти в apt-ftparchive и в разборе build-dependencies мейнтейнеры решили не исправлять: сложность правок и риск регрессий выше пользы.
Если обновиться нельзя
Проверьте значение Acquire::Retries. Если оно ненулевое, условие атаки выполнено. Временное отключение повторов убирает сценарий, но лишает APT устойчивости к сетевым сбоям и не заменяет патч. Настройку стоит вернуть после обновления.
Пока патч не установлен, не добавляйте зеркала, в которых нет уверенности, и ограничьте установку пакетов из недоверенных сетей. Проверку подписей отключать не нужно: ошибка обходит её не через настройки, а через подмену файла после проверки.
Как проверить, что риск закрыт
Сверьте версию пакета apt с исправленной для вашего выпуска. В Debian актуальные версии видны в security-трекере, в Ubuntu - в уведомлении USN-8996-1. Отдельно проверьте, что в списке источников нет посторонних записей, а в конфигурации не осталось необъяснимых значений Acquire::Retries. Особое внимание - сборочным агентам и базовым образам контейнеров: там версия APT часто остаётся старой дольше всего.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2026-109518
- https://ubuntu.com/security/CVE-2026-109518
- https://www.debian.org/security/2026/dsa-6607-1
- https://ubuntu.com/security/notices/USN-8996-1
- https://security-tracker.debian.org/tracker/CVE-2026-109518
- https://lists.debian.org/deity/2026/11/msg00005.html