CVE: CVE-2026-80558
Продукт: Linux Kernel
Дата публикации: 26.08.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,52%; процентиль 42,04%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
Уязвимость в модуле libceph ядра Linux позволяет злоумышленнику, контролирующему Ceph-монитор или OSD, вызвать чтение вне границ памяти. Это происходит из-за отсутствия проверки индексов OSD в поле primary_temp повреждённой карты osdmap. Проблема затрагивает узлы, работающие с Ceph, и устранена патчем, добавляющим валидацию индексов перед их использованием в расчёте целевого OSD.
Основные характеристики
Риск связан с нарушением целостности данных, получаемых из внешней Ceph-инфраструктуры, что приводит к невалидному обращению к памяти ядра. Успешная эксплуатация требует контроля над источником данных osdmap.
- Тип ошибки: Out-of-bounds Read. Индекс, полученный из внешнего источника, не проверяется на валидность перед использованием как указателя в массиве.
- CVSS: 9.8 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Высокая оценка отражает сетевой вектор атаки и отсутствие необходимости в привилегиях, хотя практическая реализация требует специфической инфраструктуры.
- Условия атаки: Атакующий должен иметь возможность отправлять сформированные osdmap-сообщения узлу Linux, использующему libceph.
- Эксплуатация: Публичные данные о подтверждённой эксплуатации в реальных атаках отсутствуют. EPSS составляет 0,52% (процентиль 42,04%), что указывает на низкую вероятность эксплуатации в ближайшем будущем.
Какие продукты и версии затронуты
Уязвимость затрагивает ядра Linux, содержащие модуль
libceph и поддержку маппингов primary_temp.- Компонент:
net/ceph/osdmap.c(функцияget_temp_osds).
- Уязвимые версии: Все версии ядра, в которых присутствует код, добавленный коммитом
5e8d4d36bf23("libceph: add support for primary_temp mappings"), и не содержащие исправления.
- Исправленные версии: Патч распространён в ветках stable. Точные номера версий зависят от дистрибутива. Рекомендуется проверить наличие коммита
3660b98d1204b419f6a77e9a295f148dcf38d042в истории ядра.
Причина уязвимости
Причина уязвимости кроется в недостаточной валидации данных, полученных из Ceph-инфраструктуры. Функция
get_temp_osds() в файле net/ceph/osdmap.c извлекает индекс OSD из структуры primary_temp карты osdmap.В отличие от других полей (
pg_temp, pg_upmap), индекс из primary_temp не проверялся на валидность. Если в osdmap содержался индекс, превышающий max_osd или меньший CEPH_HOMELESS_OSD (-1), он использовался без контроля. Это приводило к обращению к массивам osd_state, osd_weight и osd_addr вне их границ, так как эти массивы имеют размер max_osd.Как работает атака
Атакующий, контролирующий Ceph-монитор или OSD, отправляет узлу Linux сформированный osdmap. В поле
primary_temp этого osdmap содержится невалидный индекс OSD (например, значение, превышающее количество реальных OSD в кластере).При обработке этого osdmap функция
calc_target() вызывает ceph_pg_to_up_acting_osds(), которая, в свою очередь, вызывает get_temp_osds(). Из-за отсутствия проверки, невалидный индекс сохраняется в temp->primary.Последующее чтение значений из массивов состояния OSD по этому индексу приводит к out-of-bounds read. Это может вызвать сбой ядра (panic) или утечку данных из памяти ядра.
Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:
- Узел Linux подключён к Ceph-кластеру и использует модуль
libceph.
- Атакующий имеет возможность отправлять osdmap-сообщения на узел (контроль над монитором или подмена трафика).
- В ядре отсутствует патч, добавляющий проверку валидности индексов в
get_temp_osds().
- В osdmap специально сформировано поле
primary_tempс невалидным значением.
Возможный сценарий атаки
Сценарий атаки начинается с компрометации или подмены Ceph-монитора. Атакующий формирует osdmap, в котором поле
primary_temp содержит индекс, не существующий в кластере (например, 999, если в кластере 10 OSD).Этот osdmap отправляется на целевой узел. Ядро Linux обрабатывает сообщение и вызывает функцию
get_temp_osds(). Невалидный индекс проходит без проверки и используется для доступа к массивам osd_state и osd_weight.Происходит чтение памяти за пределами выделенного массива. В худшем случае это приводит к падению ядра (Denial of Service), в лучшем — к утечке данных из памяти ядра, которые могут быть использованы для дальнейшей эксплуатации.
Есть ли публичный эксплойт
На момент публикации данных публичный эксплойт (PoC) для CVE-2026-80558 не подтверждён. В источниках представлены только патчи ядра и описание уязвимости.
Отсутствие публичного эксплойта не означает, что атака невозможна, но снижает вероятность массового использования в краткосрочной перспективе. EPSS 0,52% подтверждает низкую оценку вероятности эксплуатации.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для этой уязвимости не опубликованы. Общие точки контроля, которые могут указывать на попытку атаки, включают:
- Записи в журналах ядра (dmesg) о сбое или предупреждениях, связанных с
libcephилиosdmap.
- Необычная активность в Ceph-мониторах: отправка osdmap с аномальными значениями индексов OSD.
- Падения ядра (kernel panic) на узлах, использующих Ceph, без очевидной причины.
Как обнаружить атаку
Обнаружение атаки затруднено из-за отсутствия специфичных сигнатур. Рекомендуется:
- Мониторинг журналов ядра на предмет ошибок, связанных с
libceph.
- Анализ логов Ceph-мониторов на предмет аномальных osdmap-обновлений.
- Использование систем обнаружения аномалий (IDS) для контроля трафика между узлами Linux и Ceph-инфраструктурой.
- Проверка целостности ядра и наличие патчей.
Как проверить свою версию
Для проверки версии ядра и наличия уязвимости используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Затем сверьте версию ядра с списком исправленных версий в вашей дистрибуции. Если вы используете исходники, проверьте наличие коммита
3660b98d1204b419f6a77e9a295f148dcf38d042 в истории: git log --all --grep="libceph: Avoid using invalid osd indices".Исправление
Единственный надёжный способ устранения уязвимости — обновление ядра до версии, содержащей патч.
- Обновите ядро до последней стабильной версии, поддерживаемой вашим дистрибутивом.
- Убедитесь, что в ядре присутствует коммит
3660b98d1204b419f6a77e9a295f148dcf38d042или его эквивалент в вашей ветке.
- Перезагрузите систему после обновления ядра, чтобы загрузить новый модуль.
Временные меры защиты
Пока обновление не установлено, можно снизить риск:
- Ограничьте доступ к Ceph-мониторам и OSD только доверенным узлам.
- Используйте сетевые правила (firewall) для контроля трафика между узлами Linux и Ceph-инфраструктурой.
- Рассмотрите возможность отключения использования
libcephна критических узлах, если это допустимо в вашей архитектуре.
- Усиленный мониторинг журналов ядра и Ceph-инфраструктуры.
Как проверить устранение уязвимости
После обновления ядра проверьте, что патч применён:
Bash:
grep -r "ceph_osd_is_down" /lib/modules/$(uname -r)/
Также убедитесь, что версия ядра соответствует исправленной:
uname -r. Проверьте логи загрузки ядра на предмет ошибок при инициализации libceph.Вывод
CVE-2026-80558 представляет собой серьёзную уязвимость в модуле
libceph, позволяющую вызвать out-of-bounds read через подделку osdmap. Хотя практическая эксплуатация требует контроля над Ceph-инфраструктурой, критический уровень CVSS и потенциальный риск для систем, использующих Ceph, делают обновление ядра приоритетной задачей. Администраторам следует проверить наличие патча и обновить уязвимые узлы.Официальные источники
- NVD — CVE-2026-80558
- FIRST EPSS — CVE-2026-80558
- libceph: Avoid using invalid osd indices from primary_temp - kernel/git/stable/linux.git - Linux kernel stable tree
- libceph: Avoid using invalid osd indices from primary_temp - kernel/git/stable/linux.git - Linux kernel stable tree
- libceph: Avoid using invalid osd indices from primary_temp - kernel/git/stable/linux.git - Linux kernel stable tree
- libceph: Avoid using invalid osd indices from primary_temp - kernel/git/stable/linux.git - Linux kernel stable tree
- libceph: Avoid using invalid osd indices from primary_temp - kernel/git/stable/linux.git - Linux kernel stable tree
- libceph: Avoid using invalid osd indices from primary_temp - kernel/git/stable/linux.git - Linux kernel stable tree
- libceph: Avoid using invalid osd indices from primary_temp - kernel/git/stable/linux.git - Linux kernel stable tree
- libceph: Avoid using invalid osd indices from primary_temp - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 28.08.2026 — Опубликована первая версия материала.
