Пропущенная проверка прав в Apache ZooKeeper позволяет удалять узлы и раскрывать скрытые пути

Apache ZooKeeper

Apache Software Foundation 16 сентября 2026 года раскрыла сведения о пяти уязвимостях в Apache ZooKeeper. Этот сервис координирует работу распределённых систем, хранит конфигурации, следит за состоянием узлов и выбирает лидера в кластере. Ошибки в нём затрагивают всю инфраструктуру сразу. Часть найденных проблем касается проверки прав доступа, часть - журналирования. Вместе они ведут к раскрытию конфиденциальных данных, нарушению их целостности и обходу политики безопасности. Уязвимы версии с 3.8.0 по 3.8.6 и с 3.9.0 по 3.9.5. Исправления вышли в 3.8.7 и 3.9.6.

Детали уязвимостей

Одна из проблем получила номер CVE-2026-79993. Речь о внутренней операции удаления контейнерных записей, которую разработчики не вывели в официальный клиент. Проверку прав для неё просто не предусмотрели. Поэтому клиент, открывший обычное TCP-соединение с портом 2181, удаляет пустые постоянные узлы. Аутентификация не нужна, разрешения на узле и его родителе не учитываются. Обычное удаление проверяет и сессию, и права, а этот путь обходит обе проверки. Злоумышленник может снести контейнерные узлы и узлы с ограниченным сроком жизни. Потеря таких записей ломает логику приложений, которые на них опираются.

Вторая уязвимость связана с механизмом наблюдения за узлами. Атакующий регистрирует наблюдение за путём, которого пока не существует. Позже путь создают с ограниченными правами доступа. После переподключения клиент получает уведомление о появлении узла, хотя проверка прав для этого уведомления не выполняется. Так раскрываются пути, закрытые списками доступа. Сами данные узла остаются недоступны, но в имени пути нередко встречаются идентификаторы пользователей или логины. Уязвимость CVE-2026-59739 появилась из-за неполного исправления более ранней проблемы CVE-2024-23944. Проверку прав добавили в один обработчик, но не тронули другой.

Третья уязвимость (CVE-2026-59969) касается кластеров с включённым режимом FIPS, набором стандартов для криптографических модулей, и защищённым обменом между узлами кворума. Кворум - группа узлов, которые согласуют общее состояние. При определённом наборе настроек проверка совпадения имени узла с сертификатом не срабатывает. Узел предъявляет сертификат доверенного удостоверяющего центра, но выписанный на другое имя, и проходит. Такой участник присоединяется к обмену данными между узлами кворума, участвует в выборе лидера и получает потоки репликации. Проблема проявляется только в конфигурациях с FIPS и проверкой имён на стороне кворума, поэтому круг уязвимых развёртываний уже.

Две оставшиеся уязвимости портят журналы. Первая (CVE-2026-84439) работает при включённом аудите. Запрос аутентификации с символами табуляции в имени пользователя попадает в файл аудита, где поля разделены теми же табуляциями. Сервер эти символы не экранирует. В результате злоумышленник дописывает в запись собственные поля, например успешный результат операции или чужой тип действия. Вторая (CVE-2026-84501) использует перевод строки в запросе добавления участника кворума. Сервер записывает имя без очистки, и в рабочий журнал попадают целые поддельные строки с произвольными отметками времени, уровнями и текстом. Отличить их от настоящих записей при беглом просмотре невозможно.

Обе ошибки журналирования не дают прямого доступа к данным. Зато они подрывают разбор происшествий. Специалисты по реагированию опираются на журналы, когда восстанавливают хронологию атаки. Подделанные записи уводят расследование в сторону. Поскольку часть операций доступна без аутентификации, злоумышленник оставляет следы в системе, не имея учётной записи. Сведений об эксплуатации всех пяти уязвимостей в реальных атаках бюллетень Apache не содержит.

Дополнительный риск создаёт привычная архитектура развёртываний. Клиентский порт ZooKeeper часто открыт внутри периметра, и сетевые экраны его не фильтруют. Проверку прав при этом считают достаточной защитой. Ошибки в ней показывают, что одного этого уровня мало. Кластеры ZooKeeper нередко обслуживают Kafka, Hadoop и другие платформы, поэтому доступ к координационному сервису стоит ограничивать так же строго, как доступ к самим данным.

Исправления доступны в версиях 3.8.7 и 3.9.6. Обновление закрывает все перечисленные проблемы. Тем, кто не может обновиться сразу, стоит ограничить сетевой доступ к порту 2181 и портам обмена между узлами кворума. Помогает и запрет на подключение к ZooKeeper из недоверенных сегментов сети. Настройки FIPS и проверки имён в кворуме нужно перепроверить отдельно. За журналами аудита стоит следить внимательнее обычного, потому что часть записей может оказаться поддельной.

ZooKeeper хранит метаданные, от которых зависит работа распределённых платформ. Ошибки в проверке прав здесь оборачиваются удалением узлов и утечкой сведений о структуре данных. Пять уязвимостей вышли одним бюллетенем, и это напоминает о простом правиле. Сервис координации заслуживает такой же защиты, как базы данных, которые он обслуживает.

Ссылки

Комментарии: 0