Перейти к содержимому

Важная уязвимость в Apache Pinot позволяет злоумышленникам обходить аутентификацию

Apache Pinot – это распределенная OLAP-база данных с открытым исходным кодом, используемая такими крупными компаниями, как LinkedIn, Uber и Microsoft для аналитики в реальном времени. Недавно в ней была обнаружена критическая уязвимость безопасности, получившая идентификатор CVE-2024-56325. Данный эксплойт позволяет обходить аутентификацию и несанкционированно получать доступ к системе. Уязвимость получила 9.8 баллов по шкале CVSS v3, что соответствует максимальному уровню опасности.

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

Основной причиной является некорректная нейтрализация специальных символов в классе AuthenticationFilter (org.apache.pinot.core.auth.AuthenticationFilter). Этот класс отвечает за проверку URI для API-эндпоинтов. Используя специальные последовательности символов (например, %2e%2e/ или нулевой байт), злоумышленники могут отправлять HTTP-запросы и обходить механизм нормализации путей.

Пример: использование недостаточно очищенного метода shouldAllowUnauthenticatedAccess() позволяет обойти защиту и получить доступ к защищенным эндпоинтам, таким как /config или /tables.

Данный баг соответствует уязвимости CWE-707 («Ошибки нейтрализации элементов управления») и затрагивает следующие версии Apache Pinot:

  • Broker: версии с 0.12.0 по 1.2.0
  • Controller: версии с 0.7.0 по 1.2.0

Возможные последствия атаки

Эксплуатация этой уязвимости позволяет злоумышленникам получить те же привилегии, что и у аутентифицированных пользователей. Это дает им возможность:

  • Получить доступ к внутренним API и конфигурациям Zookeeper (через эндпоинт /appConfigs)
  • Выполнять Groovy-скрипты через административные интерфейсы
  • Запускать атаки удаленного выполнения кода (RCE), что подтверждено специалистами по безопасности

Apache Pinot используется для обработки петабайтных объемов данных с низкими задержками, что делает скомпрометированные инстансы привлекательной целью для атак. Потенциальные злоумышленники могут:

  • Красть конфиденциальные персональные данные (PII/PHI) из аналитических потоков
  • Манипулировать финансовыми отчетами путем изменения метрик
  • Нарушать работу IoT-аналитики в промышленных средах
  • Получить доступ к связанным системам, таким как кластеры Kafka и Hadoop

Экспертная группа Trend Micro Zero Day Initiative (ZDI) присвоила этой уязвимости идентификатор ZDI-CAN-24001 и подтвердила, что для ее эксплуатации требуются лишь базовые навыки HTTP-манипуляции.

Как устранить уязвимость?

Apache исправил эту уязвимость в версии Pinot 1.3.0, реализовав метод URI.normalize() и проверку пути с использованием регулярных выражений.

Администраторам рекомендуется предпринять следующие меры:

  1. Обновить версию: перейти на Pinot 1.3.0 или более новую версию.
  2. Включить RBAC (Role-Based Access Control): активировать протокол доступа с ролевыми ограничениями через pinot.controller.access.protocols=http+rbac.
  3. Отключить Groovy-скрипты, установив pinot.server.instance.enable.groovy=false.
  4. Настроить защиту на уровне WAF (Web Application Firewall): заблокировать URI с последовательностями .., %252e%252e и %00.

Дополнительные рекомендации

Форензика и аудит: проанализировать логи доступа на предмет неавторизованных запросов, содержащих /.., возвращающих HTTP 200.
Фильтрация входных данных: строго проверять и очищать все входные данные.
Мониторинг в реальном времени: использовать системы наблюдения для выявления новых атак.
Обучение персонала: регулярно проводить тренировки по безопасности.

Заключение

Данная уязвимость в Apache Pinot возникла из-за того, что механизмы аутентификации отставали от оптимизации запросов. Подобные проблемы ранее наблюдались в Elasticsearch (CVE-2024-35253) и MongoDB Atlas (CVE-2024-48721).

Согласно отчету IBM за 2025 год, 78% утечек данных связаны с уязвимостями обхода аутентификации. Поэтому для защиты распределенных архитектур крайне важно правильно проверять и фильтровать учетные данные.

Администраторам рекомендуется немедленно применить исправления и следовать предложенным мерам безопасности, чтобы предотвратить будущие угрозы.