Заказать
Все кейсы
Кейс 08 / 08CRITICAL · CVSS 9.9
Платформа анализа соцсетей · Kubernetes

Внутренние сервисы открыты через «доверенные» адреса

Кластер пускал всех с доверенных IP. Мы нашли три независимых пути в этот список.

Заказчик: · NDA

  • Доступиз интернета, без VPN
  • Под угрозойлоги всего кластера
  • Исправленов тот же день
12доверенных адресов уже принадлежали чужим людям
Доверенные адреса
Адресов в спискеПериметр закрыт
200 своих
Вход из интернета, без VPN и паролей
Фронт-сервер заказчикадоверен
Адреса перешли другим клиентам хостинга12 IP
Логи кластера читаются без пароляоткрыто
После исправления: чужие адреса удалены
01

О продукте

Платформа анализа соцсетей работала в Kubernetes на собственном оборудовании. Единый ingress выбирал внутренний сервис по HTTP-заголовку Host. Доступ разрешался примерно с 200 доверенных IP-адресов, включая публичные прокси и серверы компании.

02

Где была ошибка

Публичный edge-прокси принимал PROXY-протокол из интернета и передавал Host клиента без проверки. Для ingress запрос приходил с доверенного адреса прокси, но имя внутреннего сервиса выбирал внешний клиент.

Два старых балансировщика тоже передавали чужой Host. Ещё 12 доверенных IP уже принадлежали другим клиентам хостинга. Поэтому закрытие одного прокси оставляло два независимых пути к внутренним сервисам, включая хранилище логов без отдельной аутентификации.

03

Чем это грозило

  • Доступ ко всем внутренним сервисам
  • Чтение логов с учётными данными
  • Подброс ложных событий в мониторинг
04

Как доказали

Без VPN и учётных данных получили ответ внутреннего приложения и счётчик миллиардов записей в хранилище логов. Принадлежность 12 чужих адресов проверили через API хостинга. Демонстрации повторили из двух внешних сетей.

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

05

Как исправили

Доверие по IP-адресу

  • Публичные прокси передавали произвольный Host во внутренний ingress
  • PROXY-протокол принимался от любого источника
  • В доверенном списке оставались 12 чужих адресов
  • Удаление сервера не удаляло доверие к его адресу

Доверие сужено и проверено снаружи

  • Host закрепили за виртуальным хостом по SNI на всех публичных прокси
  • PROXY-протокол разрешили только от облачного балансировщика
  • Чужие адреса удалили из списка ingress и межсетевых экранов
  • Удаление адреса включили в процедуру вывода сервера; доступ проверили из двух сетей
Урок

IP-адрес — не пароль. И проверяйте исправление снаружи: первое в этой истории не сработало.

Исправлено
Заявка

Проверим ваш продукт до того, как это сделает кто-то другой

Опишите продукт в двух словах. Ответим в течение рабочего дня и предложим формат: чёрный или белый ящик.

  • Договор и NDA до начала работ
  • Отчёт для бизнеса и для разработчиков
  • Повторная проверка после исправления